aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/platform/gui/xcb/Window.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/platform/gui/xcb/Window.cpp b/src/platform/gui/xcb/Window.cpp
index 67568dce..3f22e6b0 100644
--- a/src/platform/gui/xcb/Window.cpp
+++ b/src/platform/gui/xcb/Window.cpp
@@ -59,6 +59,12 @@ IEvent<std::nullptr_t> *XcbWindow::CreateEvent() { return &create_event_; }
IEvent<std::nullptr_t> *XcbWindow::DestroyEvent() { return &destroy_event_; }
+IEvent<std::nullptr_t> *XcbWindow::PaintEvent() { return &paint_event_; }
+
+IEvent<WindowVisibilityType> *XcbWindow::VisibilityChangeEvent() {
+ return &visibility_change_event_;
+}
+
IEvent<Size> *XcbWindow::ResizeEvent() { return &resize_event_; }
IEvent<FocusChangeType> *XcbWindow::FocusEvent() { return &focus_event_; }
@@ -140,6 +146,14 @@ void XcbWindow::HandleEvent(xcb_generic_event_t *event) {
}
break;
}
+ case XCB_MAP_NOTIFY: {
+ visibility_change_event_.Raise(WindowVisibilityType::Show);
+ break;
+ }
+ case XCB_UNMAP_NOTIFY: {
+ visibility_change_event_.Raise(WindowVisibilityType::Hide);
+ break;
+ }
case XCB_FOCUS_IN: {
focus_event_.Raise(FocusChangeType::Gain);
break;
@@ -236,6 +250,14 @@ std::optional<xcb_window_t> XcbWindow::GetEventWindow(
(xcb_configure_notify_event_t *)event;
return configure->event;
}
+ case XCB_MAP_NOTIFY: {
+ xcb_map_notify_event_t *map = (xcb_map_notify_event_t *)event;
+ return map->event;
+ }
+ case XCB_UNMAP_NOTIFY: {
+ xcb_unmap_notify_event_t *unmap = (xcb_unmap_notify_event_t *)event;
+ return unmap->event;
+ }
case XCB_FOCUS_IN: {
xcb_focus_in_event_t *fi = (xcb_focus_in_event_t *)event;
return fi->event;