1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 06:07:34 +00:00

LibGUI+WindowServer: Separate window manager IPC from regular IPC

With this patch the window manager related functionality is split out
onto a new endpoint pair named WindowManagerServer/Client.  This allows
window manager functionality to be potentially privilege separated in
the future.  To this end, a new client named WMConnectionClient
is used to maintain a window manager connection.  When a process
connects to the endpoint and greets the WindowServer as a window manager
(via Window::make_window_manager(int)), they're subscribed to the events
they requested via the WM event mask.

This patch also removes the hardcoding of the Taskbar WindowType to
receive WM events automatically.  However, being a window manager still
requires having an active window, at the moment.
This commit is contained in:
sin-ack 2021-04-14 21:38:53 +00:00 committed by Andreas Kling
parent 139c04a6e5
commit aa56f9a1e0
24 changed files with 522 additions and 230 deletions

View file

@ -100,9 +100,6 @@ public:
void window_menu_activate_default();
void request_close();
unsigned wm_event_mask() const { return m_wm_event_mask; }
void set_wm_event_mask(unsigned mask) { m_wm_event_mask = mask; }
bool is_minimized() const { return m_minimized; }
void set_minimized(bool);
@ -137,8 +134,6 @@ public:
Window* blocking_modal_window();
bool listens_to_wm_events() const { return m_listens_to_wm_events; }
ClientConnection* client() { return m_client; }
const ClientConnection* client() const { return m_client; }
@ -381,7 +376,6 @@ private:
bool m_frameless { false };
bool m_resizable { false };
Optional<Gfx::IntSize> m_resize_aspect_ratio {};
bool m_listens_to_wm_events { false };
bool m_minimized { false };
bool m_maximized { false };
bool m_fullscreen { false };
@ -411,7 +405,6 @@ private:
RefPtr<Cursor> m_cursor;
RefPtr<Cursor> m_cursor_override;
WindowFrame m_frame;
unsigned m_wm_event_mask { 0 };
Gfx::DisjointRectSet m_pending_paint_rects;
Gfx::IntRect m_unmaximized_rect;
Gfx::IntRect m_rect_in_applet_area;