diff options
author | Spencer Dixon <spencercdixon@gmail.com> | 2021-06-21 19:32:46 -0400 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-06-28 16:29:02 +0200 |
commit | 4f11138e8eb7b03161a5d85dfc31e7a43902f79d (patch) | |
tree | 1d2d8b6d2a8a260c1532121f90abec343e953500 /Userland/Libraries/LibGUI | |
parent | 66c13edb984ca811e1d38713748b282afb561bbf (diff) | |
download | serenity-4f11138e8eb7b03161a5d85dfc31e7a43902f79d.zip |
LibGUI+WindowServer: Add new WMEvent Super+Space
To make Assistant useful we need a way to quickly trigger it. I've
added a new specialized event coming from the window server for when a
user is holding down 'Super' and hits 'Space'.
The Taskbar will be able to listen for this event and spawn a new
instance of the Assistant if it's not already running.
Diffstat (limited to 'Userland/Libraries/LibGUI')
-rw-r--r-- | Userland/Libraries/LibGUI/Event.h | 9 | ||||
-rw-r--r-- | Userland/Libraries/LibGUI/WindowManagerServerConnection.cpp | 6 | ||||
-rw-r--r-- | Userland/Libraries/LibGUI/WindowManagerServerConnection.h | 1 |
3 files changed, 16 insertions, 0 deletions
diff --git a/Userland/Libraries/LibGUI/Event.h b/Userland/Libraries/LibGUI/Event.h index edbf4ad2c9..92035a8d05 100644 --- a/Userland/Libraries/LibGUI/Event.h +++ b/Userland/Libraries/LibGUI/Event.h @@ -63,6 +63,7 @@ public: WM_WindowIconBitmapChanged, WM_AppletAreaSizeChanged, WM_SuperKeyPressed, + WM_SuperSpaceKeyPressed, __End_WM_Events, }; @@ -102,6 +103,14 @@ public: } }; +class WMSuperSpaceKeyPressedEvent : public WMEvent { +public: + explicit WMSuperSpaceKeyPressedEvent(int client_id) + : WMEvent(Event::Type::WM_SuperSpaceKeyPressed, client_id, 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 681e52489e..b3bc301624 100644 --- a/Userland/Libraries/LibGUI/WindowManagerServerConnection.cpp +++ b/Userland/Libraries/LibGUI/WindowManagerServerConnection.cpp @@ -57,4 +57,10 @@ void WindowManagerServerConnection::super_key_pressed(i32 wm_id) if (auto* window = Window::from_window_id(wm_id)) Core::EventLoop::current().post_event(*window, make<WMSuperKeyPressedEvent>(wm_id)); } + +void WindowManagerServerConnection::super_space_key_pressed(i32 wm_id) +{ + if (auto* window = Window::from_window_id(wm_id)) + Core::EventLoop::current().post_event(*window, make<WMSuperSpaceKeyPressedEvent>(wm_id)); +} } diff --git a/Userland/Libraries/LibGUI/WindowManagerServerConnection.h b/Userland/Libraries/LibGUI/WindowManagerServerConnection.h index eddeaf25e5..990dbd1841 100644 --- a/Userland/Libraries/LibGUI/WindowManagerServerConnection.h +++ b/Userland/Libraries/LibGUI/WindowManagerServerConnection.h @@ -32,6 +32,7 @@ private: virtual void window_rect_changed(i32, i32, i32, Gfx::IntRect const&) override; 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; }; } |