diff options
author | lofi <lofi@FreeBSD.org> | 2007-01-08 18:35:53 +0800 |
---|---|---|
committer | lofi <lofi@FreeBSD.org> | 2007-01-08 18:35:53 +0800 |
commit | cc6319f0be4da68de3fa6b327a9fdabf891fa3f2 (patch) | |
tree | 33f86cb3d00a75fc90738828e4cd8eacb72501d1 /x11/kdebase4 | |
parent | 6317cc5c8572c8e8ef28bdc83b3f3137f5c4f583 (diff) | |
download | freebsd-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/kdebase4')
-rw-r--r-- | x11/kdebase4/Makefile | 2 | ||||
-rw-r--r-- | x11/kdebase4/files/patch-kwin-client.cpp | 39 |
2 files changed, 40 insertions, 1 deletions
diff --git a/x11/kdebase4/Makefile b/x11/kdebase4/Makefile index e74b8a1b36fb..870bc4b6b30c 100644 --- a/x11/kdebase4/Makefile +++ b/x11/kdebase4/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/kdebase4/files/patch-kwin-client.cpp b/x11/kdebase4/files/patch-kwin-client.cpp new file mode 100644 index 000000000000..d8e0f91db691 --- /dev/null +++ b/x11/kdebase4/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 ); + } + } + |