From 68d1469aea24bc0a3f812b65cabf16fcc8ddce83 Mon Sep 17 00:00:00 2001 From: Conor Byrne <71222289+dreamhopping@users.noreply.github.com> Date: Sat, 17 Apr 2021 23:21:56 +0100 Subject: [PATCH] Taskbar: Show start menu when super key is pressed This commit re-adds the functionality of the start menu appearing when the super key is pressed --- Userland/Services/Taskbar/TaskbarWindow.cpp | 21 +++++++++++++++------ Userland/Services/Taskbar/TaskbarWindow.h | 1 + 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Userland/Services/Taskbar/TaskbarWindow.cpp b/Userland/Services/Taskbar/TaskbarWindow.cpp index 140762469a..870dd251f6 100644 --- a/Userland/Services/Taskbar/TaskbarWindow.cpp +++ b/Userland/Services/Taskbar/TaskbarWindow.cpp @@ -84,14 +84,15 @@ TaskbarWindow::TaskbarWindow(NonnullRefPtr start_menu) main_widget.set_layout(); main_widget.layout()->set_margins({ 3, 3, 3, 1 }); - auto& start_button = main_widget.add("Serenity"); - start_button.set_font(Gfx::FontDatabase::default_bold_font()); - start_button.set_icon_spacing(0); - start_button.set_fixed_size(80, 22); + m_start_button = GUI::Button::construct("Serenity"); + m_start_button->set_font(Gfx::FontDatabase::default_bold_font()); + m_start_button->set_icon_spacing(0); + m_start_button->set_fixed_size(80, 22); auto app_icon = GUI::Icon::default_icon("ladybug"); - start_button.set_icon(app_icon.bitmap_for_size(16)); - start_button.set_menu(m_start_menu); + m_start_button->set_icon(app_icon.bitmap_for_size(16)); + m_start_button->set_menu(m_start_menu); + main_widget.add_child(*m_start_button); create_quick_launch_bar(); m_task_button_container = main_widget.add(); @@ -338,6 +339,14 @@ void TaskbarWindow::wm_event(GUI::WMEvent& event) update_applet_area(); break; } + case GUI::Event::WM_SuperKeyPressed: { + if (m_start_menu->is_visible()) { + m_start_menu->dismiss(); + } else { + m_start_menu->popup(m_start_button->screen_relative_rect().top_left()); + } + break; + } default: break; } diff --git a/Userland/Services/Taskbar/TaskbarWindow.h b/Userland/Services/Taskbar/TaskbarWindow.h index e3eebd753e..50d1881d8c 100644 --- a/Userland/Services/Taskbar/TaskbarWindow.h +++ b/Userland/Services/Taskbar/TaskbarWindow.h @@ -59,4 +59,5 @@ private: Gfx::IntSize m_applet_area_size; RefPtr m_applet_area_container; + RefPtr m_start_button; };