From f761d4ef25ab0e695c79ae5c2ede1f850f1607af Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Tue, 9 Sep 2025 19:10:14 +0800 Subject: Develop some xcb window. --- include/cru/platform/gui/xcb/Window.h | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'include/cru/platform/gui/xcb/Window.h') diff --git a/include/cru/platform/gui/xcb/Window.h b/include/cru/platform/gui/xcb/Window.h index 2d5651e7..1676dced 100644 --- a/include/cru/platform/gui/xcb/Window.h +++ b/include/cru/platform/gui/xcb/Window.h @@ -4,11 +4,14 @@ #include "Base.h" #include +#include namespace cru::platform::gui::xcb { class XcbUiApplication; class XcbWindow : public XcbResource, public virtual INativeWindow { + friend XcbUiApplication; + public: explicit XcbWindow(XcbUiApplication* application); ~XcbWindow() override; @@ -66,8 +69,8 @@ class XcbWindow : public XcbResource, public virtual INativeWindow { virtual IEvent* ResizeEvent() = 0; virtual IEvent* FocusEvent() = 0; - virtual IEvent* MouseEnterLeaveEvent() = 0; - virtual IEvent* MouseMoveEvent() = 0; + IEvent* MouseEnterLeaveEvent() override; + IEvent* MouseMoveEvent() override; virtual IEvent* MouseDownEvent() = 0; virtual IEvent* MouseUpEvent() = 0; virtual IEvent* MouseWheelEvent() = 0; @@ -76,8 +79,19 @@ class XcbWindow : public XcbResource, public virtual INativeWindow { virtual IInputMethodContext* GetInputMethodContext() = 0; + public: + std::optional GetXcbWindow(); + + private: + xcb_window_t DoCreateWindow(); + void HandleEvent(xcb_generic_event_t* event); + static std::optional GetEventWindow(xcb_generic_event_t* event); + private: XcbUiApplication* application_; - xcb_window_t xcb_window_; + std::optional xcb_window_; + + Event mouse_enter_leave_event_; + Event mouse_move_event_; }; } // namespace cru::platform::gui::xcb -- cgit v1.2.3