/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "WindowList.h" #include #include #include #include #include #include class TaskbarWindow final : public GUI::Window , public Config::Listener { C_OBJECT(TaskbarWindow); public: virtual ~TaskbarWindow() override; static int taskbar_height() { return 27; } static int taskbar_icon_size() { return 16; } virtual void config_key_was_removed(String const&, String const&, String const&) override; virtual void config_string_did_change(String const&, String const&, String const&, String const&) override; private: explicit TaskbarWindow(NonnullRefPtr start_menu); static void show_desktop_button_clicked(unsigned); void create_quick_launch_bar(); void set_quick_launch_button_data(GUI::Button&, String const&, NonnullRefPtr); void on_screen_rects_change(const Vector&, size_t); NonnullRefPtr create_button(const WindowIdentifier&); void add_window_button(::Window&, const WindowIdentifier&); void remove_window_button(::Window&, bool); void update_window_button(::Window&, bool); ::Window* find_window_owner(::Window&) const; virtual void event(Core::Event&) override; virtual void wm_event(GUI::WMEvent&) override; virtual void screen_rects_change_event(GUI::ScreenRectsChangeEvent&) override; void update_applet_area(); bool is_window_on_current_workspace(::Window&) const; void workspace_change_event(unsigned, unsigned); void set_start_button_font(Gfx::Font const&); NonnullRefPtr m_start_menu; RefPtr m_task_button_container; RefPtr m_default_icon; RefPtr m_quick_launch_bar; Gfx::IntSize m_applet_area_size; RefPtr m_applet_area_container; RefPtr m_start_button; RefPtr m_show_desktop_button; RefPtr m_assistant_app_file; unsigned m_current_workspace_row { 0 }; unsigned m_current_workspace_column { 0 }; };