mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 06:07:34 +00:00
WindowServer: Support Alt+Character menu shortcuts :^)
This patch adds support for opening menus via keyboard shortcuts. Use an ampersand in a menu name to automatically create a keyboard shortcut (Alt + the character following the ampersand.) Menus with an Alt shortcut have a small underline under the shortcut character for discoverability.
This commit is contained in:
parent
89bc655765
commit
d80fb6d9c0
6 changed files with 56 additions and 19 deletions
|
@ -47,13 +47,15 @@ class Event;
|
|||
class Menu final : public Core::Object {
|
||||
C_OBJECT(Menu)
|
||||
public:
|
||||
Menu(ClientConnection*, int menu_id, const String& name);
|
||||
Menu(ClientConnection*, int menu_id, String name);
|
||||
virtual ~Menu() override;
|
||||
|
||||
ClientConnection* client() { return m_client; }
|
||||
const ClientConnection* client() const { return m_client; }
|
||||
int menu_id() const { return m_menu_id; }
|
||||
|
||||
u32 alt_shortcut_character() const { return m_alt_shortcut_character; }
|
||||
|
||||
bool is_empty() const { return m_items.is_empty(); }
|
||||
int item_count() const { return m_items.size(); }
|
||||
const MenuItem& item(int index) const { return m_items.at(index); }
|
||||
|
@ -142,6 +144,7 @@ private:
|
|||
ClientConnection* m_client { nullptr };
|
||||
int m_menu_id { 0 };
|
||||
String m_name;
|
||||
u32 m_alt_shortcut_character { 0 };
|
||||
Gfx::IntRect m_rect_in_window_menubar;
|
||||
NonnullOwnPtrVector<MenuItem> m_items;
|
||||
RefPtr<Window> m_menu_window;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue