aboutsummaryrefslogtreecommitdiffstats
path: root/x11/kde4-runtime
diff options
context:
space:
mode:
authorlofi <lofi@FreeBSD.org>2007-01-08 18:35:53 +0800
committerlofi <lofi@FreeBSD.org>2007-01-08 18:35:53 +0800
commitcc6319f0be4da68de3fa6b327a9fdabf891fa3f2 (patch)
tree33f86cb3d00a75fc90738828e4cd8eacb72501d1 /x11/kde4-runtime
parent6317cc5c8572c8e8ef28bdc83b3f3137f5c4f583 (diff)
downloadfreebsd-ports-gnome-cc6319f0be4da68de3fa6b327a9fdabf891fa3f2.tar.gz
freebsd-ports-gnome-cc6319f0be4da68de3fa6b327a9fdabf891fa3f2.tar.zst
freebsd-ports-gnome-cc6319f0be4da68de3fa6b327a9fdabf891fa3f2.zip
Fix KDE Bug 135250 (window-flickering in 'focus strictly under mouse' mode).
Submitted by: Daniel O'Connor <doconnor@gsoft.com.au>
Diffstat (limited to 'x11/kde4-runtime')
-rw-r--r--x11/kde4-runtime/Makefile2
-rw-r--r--x11/kde4-runtime/files/patch-kwin-client.cpp39
2 files changed, 40 insertions, 1 deletions
diff --git a/x11/kde4-runtime/Makefile b/x11/kde4-runtime/Makefile
index e74b8a1b36fb..870bc4b6b30c 100644
--- a/x11/kde4-runtime/Makefile
+++ b/x11/kde4-runtime/Makefile
@@ -8,7 +8,7 @@
PORTNAME= kdebase
PORTVERSION= ${KDE_VERSION}
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= x11 kde
MASTER_SITES= ${MASTER_SITE_KDE}
MASTER_SITE_SUBDIR= stable/${PORTVERSION:S/.0//}/src
diff --git a/x11/kde4-runtime/files/patch-kwin-client.cpp b/x11/kde4-runtime/files/patch-kwin-client.cpp
new file mode 100644
index 000000000000..d8e0f91db691
--- /dev/null
+++ b/x11/kde4-runtime/files/patch-kwin-client.cpp
@@ -0,0 +1,39 @@
+--- kwin/client.cpp.orig Mon Oct 2 03:02:07 2006
++++ kwin/client.cpp Mon Jan 8 10:54:19 2007
+@@ -477,17 +477,30 @@
+ // calls it or when the decoration is created/destroyed
+
+ if( Shape::version() >= 0x11 ) // 1.1, has input shape support
+- { // there appears to be no way to find out if a window has input
+- // shape set or not, so always set propagate the input shape
+- // (it's the same like the bounding shape by default)
+- XShapeCombineShape( qt_xdisplay(), frameId(), ShapeInput, 0, 0,
++ { // There appears to be no way to find out if a window has input
++ // shape set or not, so always propagate the input shape
++ // (it's the same like the bounding shape by default).
++ // Also, build the shape using a helper window, not directly
++ // in the frame window, because the sequence set-shape-to-frame,
++ // remove-shape-of-client, add-input-shape-of-client has the problem
++ // that after the second step there's a hole in the input shape
++ // until the real shape of the client is added and that can make
++ // the window lose focus (which is a problem with mouse focus policies)
++ static Window helper_window = None;
++ if( helper_window == None )
++ helper_window = XCreateSimpleWindow( qt_xdisplay(), qt_xrootwin(),
++ 0, 0, 1, 1, 0, 0, 0 );
++ XResizeWindow( qt_xdisplay(), helper_window, width(), height());
++ XShapeCombineShape( qt_xdisplay(), helper_window, ShapeInput, 0, 0,
+ frameId(), ShapeBounding, ShapeSet );
+- XShapeCombineShape( qt_xdisplay(), frameId(), ShapeInput,
++ XShapeCombineShape( qt_xdisplay(), helper_window, ShapeInput,
+ clientPos().x(), clientPos().y(),
+ window(), ShapeBounding, ShapeSubtract );
+- XShapeCombineShape( qt_xdisplay(), frameId(), ShapeInput,
++ XShapeCombineShape( qt_xdisplay(), helper_window, ShapeInput,
+ clientPos().x(), clientPos().y(),
+ window(), ShapeInput, ShapeUnion );
++ XShapeCombineShape( qt_xdisplay(), frameId(), ShapeInput, 0, 0,
++ helper_window, ShapeInput, ShapeSet );
+ }
+ }
+