From 939c2d14c10d27f535d344165193906e147124f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Fri, 26 Jul 2013 11:16:50 +0200 Subject: [PATCH] Enable map notify event handling As part of it Unmanaged::windowEvent() takes an xcb_generic_event_t* instead of XEvent* as argument. Method of course still needs porting. --- events.cpp | 17 ++++++++++------- unmanaged.h | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/events.cpp b/events.cpp index b64e7ec995..2e627de905 100644 --- a/events.cpp +++ b/events.cpp @@ -260,18 +260,19 @@ bool Workspace::workspaceEvent(xcb_generic_event_t *e) } return true; } -#if KWIN_QT5_PORTING - case MapNotify: { - if (e->xmap.override_redirect) { - Unmanaged* c = findUnmanaged(WindowMatchPredicate(e->xmap.window)); + case XCB_MAP_NOTIFY: { + const auto *event = reinterpret_cast(e); + if (event->override_redirect) { + Unmanaged* c = findUnmanaged(WindowMatchPredicate(event->window)); if (c == NULL) - c = createUnmanaged(e->xmap.window); + c = createUnmanaged(event->window); if (c) return c->windowEvent(e); } - return (e->xmap.event != e->xmap.window); // hide wm typical event from Qt + return (event->event != event->window); // hide wm typical event from Qt } +#if KWIN_QT5_PORTING case EnterNotify: { if (QWhatsThis::inWhatsThisMode()) { QWidget* w = QWidget::find(e->xcrossing.window); @@ -1496,8 +1497,9 @@ void Client::syncEvent(XSyncAlarmNotifyEvent* e) // Unmanaged // **************************************** -bool Unmanaged::windowEvent(XEvent* e) +bool Unmanaged::windowEvent(xcb_generic_event_t *e) { +#if KWIN_QT5_PORTING double old_opacity = opacity(); unsigned long dirty[ 2 ]; info->event(e, dirty, 2); // pass through the NET stuff @@ -1533,6 +1535,7 @@ bool Unmanaged::windowEvent(XEvent* e) break; } } +#endif return false; // don't eat events, even our own unmanaged widgets are tracked } diff --git a/unmanaged.h b/unmanaged.h index a414ffec56..dd8d4d3699 100644 --- a/unmanaged.h +++ b/unmanaged.h @@ -34,7 +34,7 @@ class Unmanaged Q_OBJECT public: explicit Unmanaged(); - bool windowEvent(XEvent* e); + bool windowEvent(xcb_generic_event_t *e); void release(bool on_shutdown = false); bool track(Window w); static void deleteUnmanaged(Unmanaged* c);