Hello community, here is the log from the commit of package kdelibs4 for openSUSE:Factory checked in at 2013-06-05 11:53:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kdelibs4 (Old) and /work/SRC/openSUSE:Factory/.kdelibs4.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kdelibs4" Changes: -------- --- /work/SRC/openSUSE:Factory/kdelibs4/kdelibs4-apidocs.changes 2013-05-16 16:49:18.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.kdelibs4.new/kdelibs4-apidocs.changes 2013-06-05 11:53:08.000000000 +0200 @@ -1,0 +2,7 @@ +Mon May 27 18:42:23 UTC 2013 - [email protected] + +- Added Fix-KWindowSystem-compositingChanged-signal.patch, fixes + long standing bug of KWin clients (e.g. plasma) not detecting + compositing state (kde#179042) + +------------------------------------------------------------------- kdelibs4.changes: same change New: ---- Fix-KWindowSystem-compositingChanged-signal.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kdelibs4.spec ++++++ --- /var/tmp/diff_new_pack.M7PgHI/_old 2013-06-05 11:53:09.000000000 +0200 +++ /var/tmp/diff_new_pack.M7PgHI/_new 2013-06-05 11:53:09.000000000 +0200 @@ -121,6 +121,9 @@ Patch100: fix-freeX11Pixmaps.patch # PATCH-FIX-UPSTREAM dont-show-passwords-contained-in-HTTP-URLs-in-error-messages.patch -- Ommits passwords contained in HTTP URLs in error messages kde#319428 Patch101: dont-show-passwords-contained-in-HTTP-URLs-in-error-messages.patch +# PATCH-FIX-UPSTREAM Fix-KWindowSystem-compositingChanged-signal.patch, fixes long standing bug of KWin clients (e.g. plasma) not detecting +# compositing state (kde#179042) +Patch102: Fix-KWindowSystem-compositingChanged-signal.patch PreReq: permissions Requires: soprano >= %( echo `rpm -q --queryformat '%{VERSION}' libsoprano-devel`) Recommends: strigi >= %( echo `rpm -q --queryformat '%{VERSION}' strigi-devel`) @@ -193,6 +196,7 @@ %patch27 -p1 %patch100 -p1 %patch101 -p1 +%patch102 -p1 # # define KDE version exactly ++++++ Fix-KWindowSystem-compositingChanged-signal.patch ++++++ >From 73fa526cd5541e74c3e992e9fcb0278efaaa5366 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= <[email protected]> Date: Fri, 28 Dec 2012 20:49:15 +0100 Subject: [PATCH 3/3] Fix KWindowSystem::compositingChanged signal This as a workaround also listens to selection notifications on the rootwindow as caused by Qt which also blindly compresses away the event on the KWindowSystem WId BUG: 179042 FIXED-IN: 4.11 REVIEW: 107983 --- kdeui/windowmanagement/kwindowsystem_x11.cpp | 32 ++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/kdeui/windowmanagement/kwindowsystem_x11.cpp b/kdeui/windowmanagement/kwindowsystem_x11.cpp index f9b3cc1..be32fc5 100644 --- a/kdeui/windowmanagement/kwindowsystem_x11.cpp +++ b/kdeui/windowmanagement/kwindowsystem_x11.cpp @@ -152,14 +152,32 @@ bool KWindowSystemPrivate::x11Event( XEvent * ev ) KWindowSystem* s_q = KWindowSystem::self(); #ifdef HAVE_XFIXES - if ( ev->type == xfixesEventBase + XFixesSelectionNotify && ev->xany.window == winId() ) { - XFixesSelectionNotifyEvent *event = reinterpret_cast<XFixesSelectionNotifyEvent*>(ev); - bool haveOwner = event->owner != None; - if (compositingEnabled != haveOwner) { - compositingEnabled = haveOwner; - emit s_q->compositingChanged( compositingEnabled ); + if ( ev->type == xfixesEventBase + XFixesSelectionNotify ) { + if ( ev->xany.window == winId() ) { + XFixesSelectionNotifyEvent *event = reinterpret_cast<XFixesSelectionNotifyEvent*>(ev); + bool haveOwner = event->owner != None; + if (compositingEnabled != haveOwner) { + compositingEnabled = haveOwner; + emit s_q->compositingChanged( compositingEnabled ); + } + return true; } - return true; + // Qt compresses XFixesSelectionNotifyEvents without caring about the actual window + // gui/kernel/qapplication_x11.cpp + // until that can be assumed fixed, we also react on events on the root (caused by Qts own compositing tracker) + if ( ev->xany.window == QX11Info::appRootWindow() ) { + XFixesSelectionNotifyEvent *event = reinterpret_cast<XFixesSelectionNotifyEvent*>(ev); + if (event->selection == net_wm_cm) { + bool haveOwner = event->owner != None; + if (compositingEnabled != haveOwner) { + compositingEnabled = haveOwner; + emit s_q->compositingChanged( compositingEnabled ); + } + // NOTICE this is not our event, we just randomly captured it from Qt -> pass on + return false; + } + } + return false; } #endif -- 1.8.2.2 -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
