diff options
author | Jan Grau <jan.grau95@gmail.com> | 2022-02-23 21:43:50 +0100 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2022-02-24 18:57:20 +0000 |
commit | 6992a07afcdce14f316490b8a26e116d3f5e8059 (patch) | |
tree | fe8307382e6f8f0fcdac76ae42104ac03144dd18 /Userland/Libraries/LibGUI | |
parent | 001b08dec9a28859ecd5fb9e9a6d42f00bdb9a57 (diff) | |
download | serenity-6992a07afcdce14f316490b8a26e116d3f5e8059.zip |
LibGUI+WindowServer: Add new `WMEvent` Super+Digit
This adds a keyboard event for Super+0 to Super+9. Later to be consumed
in the taskbar.
Currently only this keyboard sequence is supported:
- Super key down
- Digit key down
But not this:
- Super key down
- Digit key down
- Digit key up
- Digit key down
Diffstat (limited to 'Userland/Libraries/LibGUI')
-rw-r--r-- | Userland/Libraries/LibGUI/Event.h | 15 | ||||
-rw-r--r-- | Userland/Libraries/LibGUI/WindowManagerServerConnection.cpp | 6 | ||||
-rw-r--r-- | Userland/Libraries/LibGUI/WindowManagerServerConnection.h | 1 |
3 files changed, 22 insertions, 0 deletions
diff --git a/Userland/Libraries/LibGUI/Event.h b/Userland/Libraries/LibGUI/Event.h index b386858195..be57fab47f 100644 --- a/Userland/Libraries/LibGUI/Event.h +++ b/Userland/Libraries/LibGUI/Event.h @@ -66,6 +66,7 @@ public: WM_AppletAreaSizeChanged, WM_SuperKeyPressed, WM_SuperSpaceKeyPressed, + WM_SuperDigitKeyPressed, WM_WorkspaceChanged, WM_KeymapChanged, __End_WM_Events, @@ -115,6 +116,20 @@ public: } }; +class WMSuperDigitKeyPressedEvent : public WMEvent { +public: + WMSuperDigitKeyPressedEvent(int client_id, u8 digit) + : WMEvent(Event::Type::WM_SuperDigitKeyPressed, client_id, 0) + , m_digit(digit) + { + } + + u8 digit() const { return m_digit; } + +private: + u8 m_digit { 0 }; +}; + class WMAppletAreaSizeChangedEvent : public WMEvent { public: explicit WMAppletAreaSizeChangedEvent(const Gfx::IntSize& size) diff --git a/Userland/Libraries/LibGUI/WindowManagerServerConnection.cpp b/Userland/Libraries/LibGUI/WindowManagerServerConnection.cpp index 9d894ab43b..412540a670 100644 --- a/Userland/Libraries/LibGUI/WindowManagerServerConnection.cpp +++ b/Userland/Libraries/LibGUI/WindowManagerServerConnection.cpp @@ -64,6 +64,12 @@ void WindowManagerServerConnection::super_space_key_pressed(i32 wm_id) Core::EventLoop::current().post_event(*window, make<WMSuperSpaceKeyPressedEvent>(wm_id)); } +void WindowManagerServerConnection::super_digit_key_pressed(i32 wm_id, u8 digit) +{ + if (auto* window = Window::from_window_id(wm_id)) + Core::EventLoop::current().post_event(*window, make<WMSuperDigitKeyPressedEvent>(wm_id, digit)); +} + void WindowManagerServerConnection::workspace_changed(i32 wm_id, u32 row, u32 column) { if (auto* window = Window::from_window_id(wm_id)) diff --git a/Userland/Libraries/LibGUI/WindowManagerServerConnection.h b/Userland/Libraries/LibGUI/WindowManagerServerConnection.h index 78c2e4ce3e..db9c3d5f79 100644 --- a/Userland/Libraries/LibGUI/WindowManagerServerConnection.h +++ b/Userland/Libraries/LibGUI/WindowManagerServerConnection.h @@ -34,6 +34,7 @@ private: virtual void applet_area_size_changed(i32, Gfx::IntSize const&) override; virtual void super_key_pressed(i32) override; virtual void super_space_key_pressed(i32) override; + virtual void super_digit_key_pressed(i32, u8) override; virtual void workspace_changed(i32, u32, u32) override; virtual void keymap_changed(i32, String const&) override; }; |