1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 14:07:46 +00:00

LibCore: Move LibGUI/GObject to LibCore/CObject.

This commit is contained in:
Andreas Kling 2019-04-10 17:01:54 +02:00
parent b8062f69d8
commit 2f1f51b8ab
30 changed files with 144 additions and 75 deletions

69
LibCore/CEvent.h Normal file
View file

@ -0,0 +1,69 @@
#pragma once
#include <AK/AKString.h>
#include <AK/Types.h>
#include <AK/WeakPtr.h>
#include <AK/Function.h>
class CObject;
class CEvent {
public:
enum Type {
Invalid = 0,
Quit,
Timer,
DeferredDestroy,
DeferredInvoke,
ChildAdded,
ChildRemoved,
};
CEvent() { }
explicit CEvent(unsigned type) : m_type(type) { }
virtual ~CEvent() { }
unsigned type() const { return m_type; }
private:
unsigned m_type { Type::Invalid };
};
class CDeferredInvocationEvent : public CEvent {
friend class GEventLoop;
public:
CDeferredInvocationEvent(Function<void(CObject&)> invokee)
: CEvent(CEvent::Type::DeferredInvoke)
, m_invokee(move(invokee))
{
}
private:
Function<void(CObject&)> m_invokee;
};
class CTimerEvent final : public CEvent {
public:
explicit CTimerEvent(int timer_id)
: CEvent(CEvent::Timer), m_timer_id(timer_id)
{
}
~CTimerEvent() { }
int timer_id() const { return m_timer_id; }
private:
int m_timer_id;
};
class CChildEvent final : public CEvent {
public:
CChildEvent(Type, CObject& child);
~CChildEvent();
CObject* child() { return m_child.ptr(); }
const CObject* child() const { return m_child.ptr(); }
private:
WeakPtr<CObject> m_child;
};