1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 05:57:44 +00:00

Taskbar: Made it possible to add a system menu to taskbar later

This makes it possible to construct the taskbar before the system
menu and remove the awkward reference in Taskbar/main.cpp
This commit is contained in:
Arda Cinar 2022-11-25 18:13:12 +03:00 committed by Andreas Kling
parent 7456a84e68
commit 7afb7e65d5
3 changed files with 28 additions and 14 deletions

View file

@ -52,8 +52,7 @@ private:
}
};
TaskbarWindow::TaskbarWindow(NonnullRefPtr<GUI::Menu> system_menu)
: m_system_menu(move(system_menu))
TaskbarWindow::TaskbarWindow()
{
set_window_type(GUI::WindowType::Taskbar);
set_title("Taskbar");
@ -64,15 +63,8 @@ TaskbarWindow::TaskbarWindow(NonnullRefPtr<GUI::Menu> system_menu)
main_widget.set_layout<GUI::HorizontalBoxLayout>();
main_widget.layout()->set_margins({ 2, 3, 0, 3 });
m_start_button = GUI::Button::construct("Serenity");
set_start_button_font(Gfx::FontDatabase::default_font().bold_variant());
m_start_button->set_icon_spacing(0);
auto app_icon = GUI::Icon::default_icon("ladyball"sv);
m_start_button->set_icon(app_icon.bitmap_for_size(16));
m_start_button->set_menu(m_system_menu);
main_widget.add_child(*m_start_button);
main_widget.add<Taskbar::QuickLaunchWidget>();
m_quick_launch = Taskbar::QuickLaunchWidget::construct();
main_widget.add_child(*m_quick_launch);
m_task_button_container = main_widget.add<GUI::Widget>();
m_task_button_container->set_layout<GUI::HorizontalBoxLayout>();
@ -99,6 +91,21 @@ TaskbarWindow::TaskbarWindow(NonnullRefPtr<GUI::Menu> system_menu)
m_assistant_app_file = Desktop::AppFile::open(af_path);
}
void TaskbarWindow::add_system_menu(NonnullRefPtr<GUI::Menu> system_menu)
{
m_system_menu = move(system_menu);
m_start_button = GUI::Button::construct("Serenity");
set_start_button_font(Gfx::FontDatabase::default_font().bold_variant());
m_start_button->set_icon_spacing(0);
auto app_icon = GUI::Icon::default_icon("ladyball"sv);
m_start_button->set_icon(app_icon.bitmap_for_size(16));
m_start_button->set_menu(m_system_menu);
GUI::Widget* main = main_widget();
main->insert_child_before(*m_start_button, *m_quick_launch);
}
void TaskbarWindow::config_string_did_change(String const& domain, String const& group, String const& key, String const& value)
{
if (domain == "Taskbar" && group == "Clock" && key == "TimeFormat") {
@ -296,6 +303,9 @@ void TaskbarWindow::wm_event(GUI::WMEvent& event)
break;
}
case GUI::Event::WM_SuperKeyPressed: {
if (!m_system_menu)
break;
if (m_system_menu->is_visible()) {
m_system_menu->dismiss();
} else {