summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGUI
diff options
context:
space:
mode:
authorJan Grau <jan.grau95@gmail.com>2022-02-23 21:43:50 +0100
committerLinus Groh <mail@linusgroh.de>2022-02-24 18:57:20 +0000
commit6992a07afcdce14f316490b8a26e116d3f5e8059 (patch)
treefe8307382e6f8f0fcdac76ae42104ac03144dd18 /Userland/Libraries/LibGUI
parent001b08dec9a28859ecd5fb9e9a6d42f00bdb9a57 (diff)
downloadserenity-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.h15
-rw-r--r--Userland/Libraries/LibGUI/WindowManagerServerConnection.cpp6
-rw-r--r--Userland/Libraries/LibGUI/WindowManagerServerConnection.h1
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;
};