/* * Copyright (c) 2020, Hüseyin Aslıtürk * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace WindowServer { class AppletManager : public Core::Object { C_OBJECT(AppletManager) public: ~AppletManager() = default; static AppletManager& the(); virtual void event(Core::Event&) override; void add_applet(Window& applet); void remove_applet(Window& applet); void draw(); void invalidate_applet(Window const& applet, Gfx::IntRect const& rect); void relayout(); void set_position(Gfx::IntPoint const&); Window* window() { return m_window; } Window const* window() const { return m_window; } void did_change_theme(); private: AppletManager(); void repaint(); void draw_applet(Window const& applet); void set_hovered_applet(Window*); Vector> m_applets; RefPtr m_window; WeakPtr m_hovered_applet; }; }