1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-21 20:25:07 +00:00
serenity/Userland/Services/WindowServer/AppletManager.h
Ben Wiederhake 4e55d649d7 Services: Fix visibility of Object-derivative constructors
Derivatives of Core::Object should be constructed through
ClassName::construct(), to avoid handling ref-counted objects with
refcount zero. Fixing the visibility means that misuses like this are
more difficult.
2021-11-02 22:56:53 +01:00

48 lines
1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (c) 2020, Hüseyin Aslıtürk <asliturk@hotmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <WindowServer/Window.h>
#include <WindowServer/WindowManager.h>
namespace WindowServer {
class AppletManager : public Core::Object {
C_OBJECT(AppletManager)
public:
~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:
AppletManager();
void repaint();
void draw_applet(const Window& applet);
void set_hovered_applet(Window*);
Vector<WeakPtr<Window>> m_applets;
RefPtr<Window> m_window;
WeakPtr<Window> m_hovered_applet;
};
}