From 63e6b09816c5d144e83138d3fd471b800d29a52a Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 28 Aug 2019 21:11:53 +0200 Subject: WindowServer+LibGUI: Add support for nested menus It's now possible to add a GMenu as a submenu of another GMenu. Simply use the GMenu::add_submenu(NonnullOwnPtr) API :^) The WindowServer now keeps track of a stack of open menus rather than just one "current menu". This code needs a bit more work, but the basic functionality is now here! --- Servers/WindowServer/WSMenuItem.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'Servers/WindowServer/WSMenuItem.h') diff --git a/Servers/WindowServer/WSMenuItem.h b/Servers/WindowServer/WSMenuItem.h index 27b9595222..fe334b3c0d 100644 --- a/Servers/WindowServer/WSMenuItem.h +++ b/Servers/WindowServer/WSMenuItem.h @@ -44,6 +44,12 @@ public: const GraphicsBitmap* icon() const { return m_icon; } void set_icon(const GraphicsBitmap* icon) { m_icon = icon; } + bool is_submenu() const { return m_submenu_id != -1; } + int submenu_id() const { return m_submenu_id; } + void set_submenu_id(int submenu_id) { m_submenu_id = submenu_id; } + + WSMenu* submenu(); + private: WSMenu& m_menu; Type m_type { None }; @@ -55,4 +61,5 @@ private: String m_shortcut_text; Rect m_rect; RefPtr m_icon; + int m_submenu_id { -1 }; }; -- cgit v1.2.3