From f32c0abcf24f34f884e340e182db4c57a851a9af Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Tue, 30 Nov 2021 17:08:52 +0100 Subject: [PATCH] Fixed #9 #7 and #8 Alongside with the 2 previous commits. --- src/events/events.cpp | 7 +++++-- src/events/events.hpp | 1 + src/windowManager.cpp | 4 ++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/events/events.cpp b/src/events/events.cpp index 557410e..662b96c 100644 --- a/src/events/events.cpp +++ b/src/events/events.cpp @@ -77,11 +77,14 @@ void Events::eventLeave(xcb_generic_event_t* event) { void Events::eventDestroy(xcb_generic_event_t* event) { const auto E = reinterpret_cast(event); - xcb_kill_client(g_pWindowManager->DisplayConnection, E->window); g_pWindowManager->closeWindowAllChecks(E->window); +} - // Can someone tell me why the fuck some dialogs do not report they are closed and still respond to XCB even after they disappear??? +void Events::eventUnmapWindow(xcb_generic_event_t* event) { + const auto E = reinterpret_cast(event); + + g_pWindowManager->closeWindowAllChecks(E->window); } CWindow* Events::remapFloatingWindow(int windowID, int forcemonitor) { diff --git a/src/events/events.hpp b/src/events/events.hpp index 1c26ef5..95d572d 100644 --- a/src/events/events.hpp +++ b/src/events/events.hpp @@ -9,6 +9,7 @@ namespace Events { EVENT(Leave); EVENT(Destroy); EVENT(MapWindow); + EVENT(UnmapWindow); EVENT(ButtonPress); EVENT(ButtonRelease); EVENT(Expose); diff --git a/src/windowManager.cpp b/src/windowManager.cpp index e9660e0..8a4bf25 100644 --- a/src/windowManager.cpp +++ b/src/windowManager.cpp @@ -223,6 +223,10 @@ bool CWindowManager::handleEvent() { Events::eventDestroy(ev); Debug::log(LOG, "Event dispatched DESTROY"); break; + case XCB_UNMAP_NOTIFY: + Events::eventUnmapWindow(ev); + Debug::log(LOG, "Event dispatched UNMAP"); + break; case XCB_MAP_REQUEST: Events::eventMapWindow(ev); Debug::log(LOG, "Event dispatched MAP");