diff options
Diffstat (limited to 'Userland')
-rw-r--r-- | Userland/Services/Taskbar/main.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/Userland/Services/Taskbar/main.cpp b/Userland/Services/Taskbar/main.cpp index 19720fde75..2fcc93ade0 100644 --- a/Userland/Services/Taskbar/main.cpp +++ b/Userland/Services/Taskbar/main.cpp @@ -1,5 +1,6 @@ /* * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org> + * Copyright (c) 2022, Jakob-Niklas See <git@nwex.de> * * SPDX-License-Identifier: BSD-2-Clause */ @@ -20,6 +21,7 @@ #include <LibGUI/ConnectionToWindowManagerServer.h> #include <LibGUI/ConnectionToWindowServer.h> #include <LibGUI/Menu.h> +#include <LibGUI/MenuItem.h> #include <LibGUI/Process.h> #include <LibGfx/SystemTheme.h> #include <LibMain/Main.h> @@ -241,6 +243,16 @@ ErrorOr<NonnullRefPtr<GUI::Menu>> build_system_menu(WindowRefence& window_ref) } } + GUI::Application::the()->on_theme_change = [&]() { + if (g_themes_menu->is_visible()) + return; + auto current_theme_name = GUI::ConnectionToWindowServer::the().get_system_theme(); + for (size_t index = 0; index < g_themes.size(); ++index) { + auto* action = g_themes_menu->action_at(index); + action->set_checked(action->text() == current_theme_name); + } + }; + system_menu->add_action(GUI::Action::create("&Settings", Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-settings.png").release_value_but_fixme_should_propagate_errors(), [&](auto&) { GUI::Process::spawn_or_show_error(window_ref.get(), "/bin/Settings"sv); })); |