aboutsummaryrefslogtreecommitdiff
path: root/src/platform/gui/xcb
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/gui/xcb')
-rw-r--r--src/platform/gui/xcb/UiApplication.cpp8
-rw-r--r--src/platform/gui/xcb/Window.cpp12
2 files changed, 19 insertions, 1 deletions
diff --git a/src/platform/gui/xcb/UiApplication.cpp b/src/platform/gui/xcb/UiApplication.cpp
index d64fc9da..139a5422 100644
--- a/src/platform/gui/xcb/UiApplication.cpp
+++ b/src/platform/gui/xcb/UiApplication.cpp
@@ -79,4 +79,12 @@ void XcbUiApplication::HandleXEvents() {
NotImplemented();
}
}
+
+void XcbUiApplication::RegisterWindow(XcbWindow *window) {
+ windows_.push_back(window);
+}
+
+void XcbUiApplication::UnregisterWindow(XcbWindow *window) {
+ std::erase(windows_, window);
+}
} // namespace cru::platform::gui::xcb
diff --git a/src/platform/gui/xcb/Window.cpp b/src/platform/gui/xcb/Window.cpp
index 92772acf..cf4e059d 100644
--- a/src/platform/gui/xcb/Window.cpp
+++ b/src/platform/gui/xcb/Window.cpp
@@ -1 +1,11 @@
-#include <cru/platform/gui/xcb/Window.h>
+#include "cru/platform/gui/xcb/Window.h"
+#include "cru/platform/gui/xcb/UiApplication.h"
+
+namespace cru::platform::gui::xcb {
+XcbWindow::XcbWindow(XcbUiApplication* application)
+ : application_(application) {
+ application->RegisterWindow(this);
+}
+
+XcbWindow::~XcbWindow() { application_->UnregisterWindow(this); }
+} // namespace cru::platform::gui::xcb