/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "WindowList.h" #include #include #include class TaskbarWindow final : public GUI::Window { C_OBJECT(TaskbarWindow); public: virtual ~TaskbarWindow() override; static int taskbar_height() { return 27; } static int taskbar_icon_size() { return 16; } private: explicit TaskbarWindow(NonnullRefPtr start_menu); static void show_desktop_button_clicked(unsigned); void create_quick_launch_bar(); 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_virtual_desktop(::Window&) const; void virtual_desktop_change_event(unsigned, unsigned); NonnullRefPtr m_start_menu; RefPtr m_task_button_container; RefPtr m_default_icon; 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_virtual_desktop_row { 0 }; unsigned m_current_virtual_desktop_column { 0 }; };