59 NET::WindowType windowType()
const override;
60 QRectF frameRectToBufferRect(
const QRectF &rect)
const override;
61 void destroyWindow()
override;
66 void moveResizeInternal(
const QRectF &rect,
MoveResizeMode mode)
override;
69 virtual void handleRoleCommit();
70 virtual void handleRolePrecommit();
71 virtual void handleRoleDestroyed();
74 void scheduleConfigure();
79 NET::WindowType m_windowType = NET::Normal;
83 void handleConfigureAcknowledged(quint32
serial);
85 void handleNextWindowGeometry();
86 bool haveNextWindowGeometry()
const;
87 void setHaveNextWindowGeometry();
88 void resetHaveNextWindowGeometry();
89 void maybeUpdateMoveResizeGeometry(
const QRectF &rect);
92 QTimer *m_configureTimer;
93 XdgSurfaceConfigure::ConfigureFlags m_configureFlags;
94 QQueue<XdgSurfaceConfigure *> m_configureEvents;
95 std::unique_ptr<XdgSurfaceConfigure> m_lastAcknowledgedConfigure;
96 std::optional<quint32> m_lastAcknowledgedConfigureSerial;
97 QRectF m_windowGeometry;
98 bool m_haveNextWindowGeometry =
false;
112 enum class PingReason {
117 enum class DecorationMode {
131 QSizeF minSize()
const override;
132 QSizeF maxSize()
const override;
133 bool isFullScreen()
const override;
134 bool isRequestedFullScreen()
const override;
135 bool isMovableAcrossScreens()
const override;
136 bool isMovable()
const override;
137 bool isResizable()
const override;
138 bool isCloseable()
const override;
139 bool isFullScreenable()
const override;
140 bool isMaximizable()
const override;
141 bool isMinimizable()
const override;
142 bool isPlaceable()
const override;
143 bool isTransient()
const override;
144 bool userCanSetNoBorder()
const override;
145 bool noBorder()
const override;
146 void setNoBorder(
bool set)
override;
147 void invalidateDecoration()
override;
148 QString preferredColorScheme()
const override;
149 bool supportsWindowRules()
const override;
150 void applyWindowRules()
override;
151 bool takeFocus()
override;
152 bool wantsInput()
const override;
153 bool dockWantsInput()
const override;
154 void setFullScreen(
bool set)
override;
155 void closeWindow()
override;
165 void handleRoleCommit()
override;
166 void handleRolePrecommit()
override;
167 void handleRoleDestroyed()
override;
168 void doMinimize()
override;
169 void doInteractiveResizeSync(
const QRectF &rect)
override;
170 void doSetActive()
override;
171 void doSetFullScreen();
172 void doSetMaximized();
173 bool doStartInteractiveMoveResize()
override;
174 void doFinishInteractiveMoveResize()
override;
175 bool acceptsFocus()
const override;
176 void doSetQuickTileMode()
override;
177 void doSetSuspended()
override;
180 void handleWindowTitleChanged();
181 void handleWindowClassChanged();
183 const QPoint &surfacePos, quint32 serial);
184 void handleMoveRequested(
SeatInterface *seat, quint32 serial);
186 void handleStatesAcknowledged(
const XdgToplevelInterface::States &states);
187 void handleMaximizeRequested();
188 void handleUnmaximizeRequested();
190 void handleUnfullscreenRequested();
191 void handleMinimizeRequested();
192 void handleTransientForChanged();
194 void handlePingTimeout(quint32 serial);
195 void handlePingDelayed(quint32 serial);
196 void handlePongReceived(quint32 serial);
197 void handleMaximumSizeChanged();
198 void handleMinimumSizeChanged();
201 void updateFullScreenMode(
bool set);
202 void sendPing(PingReason reason);
204 bool initialFullScreenMode()
const;
205 DecorationMode preferredDecorationMode()
const;
206 void configureDecoration();
207 void configureXdgDecoration(DecorationMode decorationMode);
208 void configureServerDecoration(DecorationMode decorationMode);
209 void clearDecoration();
210 void updateCapabilities();
212 QPointer<AppMenuInterface> m_appMenuInterface;
213 QPointer<ServerSideDecorationPaletteInterface> m_paletteInterface;
214 QPointer<ServerSideDecorationInterface> m_serverDecoration;
215 QPointer<XdgToplevelDecorationV1Interface> m_xdgDecoration;
217 XdgToplevelInterface::States m_nextStates;
218 XdgToplevelInterface::States m_acknowledgedStates;
219 XdgToplevelInterface::States m_initialStates;
220 XdgToplevelInterface::Capabilities m_capabilities;
221 QMap<quint32, PingReason> m_pings;
224 bool m_isFullScreen =
false;
225 bool m_isRequestedFullScreen =
false;
226 bool m_isInitialized =
false;
227 bool m_userNoBorder =
false;
228 bool m_isTransient =
false;
229 QPointer<Output> m_fullScreenRequestedOutput;
230 std::shared_ptr<KDecoration2::Decoration> m_nextDecoration;
231 std::unique_ptr<KillPrompt> m_killPrompt;