2 * Copyright (C) 2016 Canonical, Ltd.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20#include <QLoggingCategory>
25#include <unity/shell/application/Mir.h>
29 namespace application {
30 class MirSurfaceInterface;
36Q_DECLARE_LOGGING_CATEGORY(UNITY_WINDOW)
39 @brief A slightly higher concept than MirSurface
41 A Window exists before its MirSurface gets created (for splashscreen purposes)
42 and might also hang around after the backing surface is gone (In case the application
43 was killed to free up memory, as it should still remain in the window list since the user
44 did not explicitly close it).
46class Window : public QObject
51 * @brief Position of the current surface buffer, in pixels.
53 Q_PROPERTY(QPoint position READ position NOTIFY positionChanged)
56 * @brief Requested position of the current surface buffer, in pixels.
58 Q_PROPERTY(QPoint requestedPosition READ requestedPosition WRITE setRequestedPosition NOTIFY requestedPositionChanged)
61 * @brief State of the surface
63 Q_PROPERTY(Mir::State state READ state NOTIFY stateChanged)
66 * @brief Whether the surface is focused
68 * It will be true if this surface is MirFocusControllerInterface::focusedSurface
70 Q_PROPERTY(bool focused READ focused NOTIFY focusedChanged)
73 * @brief Whether the surface wants to confine the mouse pointer within its boundaries
75 * If true, the surface doesn't want the mouse pointer to leave its boundaries while it's focused.
77 Q_PROPERTY(bool confinesMousePointer READ confinesMousePointer NOTIFY confinesMousePointerChanged)
80 * @brief A unique identifier for this window.
81 * Useful for telling windows apart in a list model as they get moved around
83 Q_PROPERTY(int id READ id CONSTANT)
86 * @brief Surface backing up this window
87 * It might be null if a surface hasn't been created yet (application is starting up) or if
88 * the corresponding application has been killed (but can still get restarted to continue from
91 Q_PROPERTY(unity::shell::application::MirSurfaceInterface* surface READ surface NOTIFY surfaceChanged)
94 Window(int id, QObject *parent = nullptr);
96 QPoint position() const;
97 QPoint requestedPosition() const;
98 void setRequestedPosition(const QPoint &);
99 Mir::State state() const;
100 bool focused() const;
101 bool confinesMousePointer() const;
103 unity::shell::application::MirSurfaceInterface* surface() const;
105 void setSurface(unity::shell::application::MirSurfaceInterface *surface);
106 void setFocused(bool value);
108 QString toString() const;
112 * @brief Requests a change to the specified state
114 void requestState(Mir::State state);
117 * @brief Sends a close request
123 * @brief Focuses and raises the window
128 void closeRequested();
129 void emptyWindowActivated();
131 void positionChanged(QPoint position);
132 void requestedPositionChanged(QPoint position);
133 void stateChanged(Mir::State value);
134 void focusedChanged(bool value);
135 void confinesMousePointerChanged(bool value);
136 void surfaceChanged(unity::shell::application::MirSurfaceInterface *surface);
139 * @brief Emitted when focus for this window is requested by an external party
141 void focusRequested();
144 void updatePosition();
146 void updateFocused();
149 QPoint m_requestedPosition;
150 bool m_positionRequested{false};
151 bool m_focused{false};
153 Mir::State m_state{Mir::RestoredState};
154 bool m_stateRequested{false};
155 unity::shell::application::MirSurfaceInterface *m_surface{nullptr};
158QDebug operator<<(QDebug dbg, const Window *window);
160Q_DECLARE_METATYPE(Window*)
161#endif // UNITY_WINDOW_H
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list