aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/gui
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-09-09 02:21:04 +0800
committerYuqian Yang <crupest@crupest.life>2025-09-09 02:21:04 +0800
commit2f1ea611385b5bf8985a5b0571eb71976b9a8e52 (patch)
treeaf428a29eb9881b37ea407f0bb0ad662dee88231 /include/cru/platform/gui
parentf66b3de048daca9869e097926ed3fecb76647c7a (diff)
downloadcru-2f1ea611385b5bf8985a5b0571eb71976b9a8e52.tar.gz
cru-2f1ea611385b5bf8985a5b0571eb71976b9a8e52.tar.bz2
cru-2f1ea611385b5bf8985a5b0571eb71976b9a8e52.zip
Init xcb window.
Diffstat (limited to 'include/cru/platform/gui')
-rw-r--r--include/cru/platform/gui/xcb/UiApplication.h7
-rw-r--r--include/cru/platform/gui/xcb/Window.h11
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