/* * 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(); ~AppletManager(); static AppletManager& the(); virtual void event(Core::Event&) override; void add_applet(Window& applet); void remove_applet(Window& applet); void draw(); void invalidate_applet(const Window& applet, const Gfx::IntRect& rect); void relayout(); void set_position(const Gfx::IntPoint&); Window* window() { return m_window; } const Window* window() const { return m_window; } void did_change_theme(); private: void repaint(); void draw_applet(const Window& applet); void set_hovered_applet(Window*); Vector> m_applets; RefPtr m_window; WeakPtr m_hovered_applet; }; }