1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 10:28:10 +00:00

WindowServer: Add support for fullscreen windows.

Fullscreen windows are rendered alone and above everything else when they
are active, and as part of the regular window stack order when something
else is active.

Currently windows cannot be made fullscreen after-the-fact, but must have
the fullscreen flag included in their CreateWindow message.

It should not possible to interact with the menu, taskbar or window frame
while the active window is fullscreened. :^)
This commit is contained in:
Andreas Kling 2019-05-17 21:33:44 +02:00
parent 5babcac289
commit 33d0916d29
11 changed files with 54 additions and 13 deletions

View file

@ -16,7 +16,7 @@ class WSMouseEvent;
class WSWindow final : public CObject, public InlineLinkedListNode<WSWindow> {
public:
WSWindow(WSClientConnection&, WSWindowType, int window_id, bool modal, bool resizable);
WSWindow(WSClientConnection&, WSWindowType, int window_id, bool modal, bool resizable, bool fullscreen);
WSWindow(CObject&, WSWindowType);
virtual ~WSWindow() override;
@ -32,6 +32,8 @@ public:
bool is_maximized() const { return m_maximized; }
void set_maximized(bool);
bool is_fullscreen() const { return m_fullscreen; }
WSWindowFrame& frame() { return m_frame; }
const WSWindowFrame& frame() const { return m_frame; }
@ -63,7 +65,7 @@ public:
bool is_modal() const { return m_modal; }
bool is_resizable() const { return m_resizable; }
bool is_resizable() const { return m_resizable && !m_fullscreen; }
Rect rect() const { return m_rect; }
void set_rect(const Rect&);
@ -155,6 +157,7 @@ private:
bool m_listens_to_wm_events { false };
bool m_minimized { false };
bool m_maximized { false };
bool m_fullscreen { false };
RetainPtr<GraphicsBitmap> m_backing_store;
RetainPtr<GraphicsBitmap> m_last_backing_store;
int m_window_id { -1 };