1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 13:57:35 +00:00

LibGUI+WindowServer: Add app-global keyboard shortcuts.

This patch adds a GShortcut class. Each GAction can have a GShortcut which
will cause the event loop to listen for that key combination app-globally
and activate the event in case it's pressed.

The shortcut will also be displayed when the action is added to a menu.

Use this to hook up Alt+Up with the "open parent directory" action in the
FileManager app. :^)
This commit is contained in:
Andreas Kling 2019-03-02 10:04:49 +01:00
parent 5c0fca0a95
commit 596a5ce5a4
17 changed files with 263 additions and 17 deletions

View file

@ -1,13 +1,14 @@
#pragma once
#include "GEvent.h"
#include <AK/Badge.h>
#include <AK/HashMap.h>
#include <AK/OwnPtr.h>
#include <AK/Vector.h>
#include <AK/WeakPtr.h>
#include <WindowServer/WSAPITypes.h>
#include <LibGUI/GEvent.h>
class GAction;
class GObject;
class GNotifier;
class GWindow;
@ -23,8 +24,6 @@ public:
static GEventLoop& main();
static void initialize();
bool running() const { return m_running; }
int register_timer(GObject&, int milliseconds, bool should_reload);
@ -42,6 +41,9 @@ public:
pid_t server_pid() const { return m_server_pid; }
static void register_action_with_shortcut(Badge<GAction>, GAction&);
static void unregister_action_with_shortcut(Badge<GAction>, GAction&);
private:
void wait_for_event();
bool drain_messages_from_server();