diff options
-rw-r--r-- | Userland/Applets/Keymap/KeymapStatusWindow.cpp | 23 | ||||
-rw-r--r-- | Userland/Applets/Keymap/KeymapStatusWindow.h | 9 | ||||
-rw-r--r-- | Userland/Applets/Keymap/main.cpp | 4 |
3 files changed, 24 insertions, 12 deletions
diff --git a/Userland/Applets/Keymap/KeymapStatusWindow.cpp b/Userland/Applets/Keymap/KeymapStatusWindow.cpp index e8db0d0b0f..16bb584721 100644 --- a/Userland/Applets/Keymap/KeymapStatusWindow.cpp +++ b/Userland/Applets/Keymap/KeymapStatusWindow.cpp @@ -5,20 +5,29 @@ */ #include "KeymapStatusWindow.h" +#include <LibCore/Process.h> #include <LibGUI/Painter.h> #include <LibGUI/WindowManagerServerConnection.h> #include <LibKeyboard/CharacterMap.h> +void KeymapStatusWidget::mousedown_event(GUI::MouseEvent& event) +{ + if (event.button() != GUI::MouseButton::Primary) + return; + + Core::Process::spawn("/bin/KeyboardSettings"); +} + KeymapStatusWindow::KeymapStatusWindow() { set_window_type(GUI::WindowType::Applet); set_has_alpha_channel(true); - m_label = &set_main_widget<GUI::Label>(); + m_status_widget = &set_main_widget<KeymapStatusWidget>(); auto current_keymap = MUST(Keyboard::CharacterMap::fetch_system_map()); auto current_keymap_name = current_keymap.character_map_name(); - m_label->set_tooltip(current_keymap_name); - m_label->set_text(current_keymap_name.substring(0, 2)); + m_status_widget->set_tooltip(current_keymap_name); + m_status_widget->set_text(current_keymap_name.substring(0, 2)); } KeymapStatusWindow::~KeymapStatusWindow() @@ -36,9 +45,9 @@ void KeymapStatusWindow::wm_event(GUI::WMEvent& event) void KeymapStatusWindow::set_keymap_text(const String& keymap) { - GUI::Painter painter(*m_label); - painter.clear_rect(m_label->rect(), Color::from_rgba(0)); + GUI::Painter painter(*m_status_widget); + painter.clear_rect(m_status_widget->rect(), Color::from_rgba(0)); - m_label->set_tooltip(keymap); - m_label->set_text(keymap.substring(0, 2)); + m_status_widget->set_tooltip(keymap); + m_status_widget->set_text(keymap.substring(0, 2)); } diff --git a/Userland/Applets/Keymap/KeymapStatusWindow.h b/Userland/Applets/Keymap/KeymapStatusWindow.h index 8f460c1026..fbd5caf9f6 100644 --- a/Userland/Applets/Keymap/KeymapStatusWindow.h +++ b/Userland/Applets/Keymap/KeymapStatusWindow.h @@ -9,19 +9,22 @@ #include <LibGUI/Label.h> #include <LibGUI/Window.h> -class KeymapStatusWidget; +class KeymapStatusWidget : public GUI::Label { + C_OBJECT(KeymapStatusWidget); + virtual void mousedown_event(GUI::MouseEvent& event) override; +}; class KeymapStatusWindow final : public GUI::Window { C_OBJECT(KeymapStatusWindow) public: virtual ~KeymapStatusWindow() override; private: - void wm_event(GUI::WMEvent&) override; + virtual void wm_event(GUI::WMEvent&) override; KeymapStatusWindow(); - RefPtr<GUI::Label> m_label; + RefPtr<KeymapStatusWidget> m_status_widget; void set_keymap_text(String const& keymap); }; diff --git a/Userland/Applets/Keymap/main.cpp b/Userland/Applets/Keymap/main.cpp index 0dc68e811d..f4a32300e5 100644 --- a/Userland/Applets/Keymap/main.cpp +++ b/Userland/Applets/Keymap/main.cpp @@ -13,7 +13,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) { - TRY(Core::System::pledge("stdio recvfd sendfd rpath unix getkeymap")); + TRY(Core::System::pledge("stdio recvfd sendfd rpath unix getkeymap proc exec")); auto app = TRY(GUI::Application::try_create(arguments)); @@ -24,7 +24,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) window->show(); window->make_window_manager(WindowServer::WMEventMask::KeymapChanged); - TRY(Core::System::pledge("stdio recvfd sendfd rpath getkeymap")); + TRY(Core::System::pledge("stdio recvfd sendfd rpath getkeymap proc exec")); return app->exec(); } |