diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-09-09 02:21:04 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-09-09 02:21:04 +0800 |
commit | 2f1ea611385b5bf8985a5b0571eb71976b9a8e52 (patch) | |
tree | af428a29eb9881b37ea407f0bb0ad662dee88231 /include/cru/platform/gui/xcb | |
parent | f66b3de048daca9869e097926ed3fecb76647c7a (diff) | |
download | cru-2f1ea611385b5bf8985a5b0571eb71976b9a8e52.tar.gz cru-2f1ea611385b5bf8985a5b0571eb71976b9a8e52.tar.bz2 cru-2f1ea611385b5bf8985a5b0571eb71976b9a8e52.zip |
Init xcb window.
Diffstat (limited to 'include/cru/platform/gui/xcb')
-rw-r--r-- | include/cru/platform/gui/xcb/UiApplication.h | 7 | ||||
-rw-r--r-- | include/cru/platform/gui/xcb/Window.h | 11 |
2 files changed, 17 insertions, 1 deletions
diff --git a/include/cru/platform/gui/xcb/UiApplication.h b/include/cru/platform/gui/xcb/UiApplication.h index fc20a4e2..42d63609 100644 --- a/include/cru/platform/gui/xcb/UiApplication.h +++ b/include/cru/platform/gui/xcb/UiApplication.h @@ -11,6 +11,8 @@ namespace cru::platform::gui::xcb { class XcbWindow; class XcbUiApplication : public XcbResource, public virtual IUiApplication { + friend XcbWindow; + public: XcbUiApplication(); ~XcbUiApplication(); @@ -57,9 +59,12 @@ class XcbUiApplication : public XcbResource, public virtual IUiApplication { virtual std::optional<std::vector<String>> ShowOpenDialog( OpenDialogOptions options); - private: + private: void HandleXEvents(); + void RegisterWindow(XcbWindow* window); + void UnregisterWindow(XcbWindow* window); + private: xcb_connection_t* xcb_; xcb_screen_t* screen_; diff --git a/include/cru/platform/gui/xcb/Window.h b/include/cru/platform/gui/xcb/Window.h index 8d5c629e..2d5651e7 100644 --- a/include/cru/platform/gui/xcb/Window.h +++ b/include/cru/platform/gui/xcb/Window.h @@ -3,9 +3,16 @@ #include "../Window.h" #include "Base.h" +#include <xcb/xcb.h> + namespace cru::platform::gui::xcb { +class XcbUiApplication; + class XcbWindow : public XcbResource, public virtual INativeWindow { public: + explicit XcbWindow(XcbUiApplication* application); + ~XcbWindow() override; + virtual void Close() = 0; virtual INativeWindow* GetParent() = 0; @@ -68,5 +75,9 @@ class XcbWindow : public XcbResource, public virtual INativeWindow { virtual IEvent<NativeKeyEventArgs>* KeyUpEvent() = 0; virtual IInputMethodContext* GetInputMethodContext() = 0; + + private: + XcbUiApplication* application_; + xcb_window_t xcb_window_; }; } // namespace cru::platform::gui::xcb |