[fusion-commits] Compiz mirror: Changes to 'master' (d90f11daa0e5d15f7815307f1ef64376d604e8af)

compiz at server.opencompositing.org compiz at server.opencompositing.org
Tue May 20 17:12:08 CEST 2008


New commits:
commit d90f11daa0e5d15f7815307f1ef64376d604e8af
Author: Dennis Kasprzyk <onestone at opencompositing.org>
Date:   Tue May 20 17:11:40 2008 +0200

    The decorator won't get a button release event after resize and move, so we have to fake one to make qt act correctly.


 kde/window-decorator-kde4/decorator.cpp |    9 +++++++++
 kde/window-decorator-kde4/window.cpp    |    2 ++
 kde/window-decorator-kde4/window.h      |   12 ++++++++++++
 3 files changed, 23 insertions(+), 0 deletions(-)


Modified: compiz/kde/window-decorator-kde4/decorator.cpp
===================================================================
--- compiz/kde/window-decorator-kde4/decorator.cpp
+++ compiz/kde/window-decorator-kde4/decorator.cpp
@@ -603,8 +603,17 @@ KWD::Decorator::x11EventFilter (XEvent *xevent)
 		xbe2.y = xbe->y - child->pos ().y ();
 	    }
 
+	    client->setFakeRelease (false);
 	    QApplication::x11ProcessEvent ((XEvent *) &xbe2);
 
+	    /* We won't get a button release event, because of the screengrabs
+	       in compiz */
+	    if (client->getFakeRelease () && xevent->type == ButtonPress)
+	    {
+		xbe2.type = ButtonRelease;
+		QApplication::x11ProcessEvent ((XEvent *) &xbe2);
+	    }
+
 	    return true;
 	}
     } break;

Modified: compiz/kde/window-decorator-kde4/window.cpp
===================================================================
--- compiz/kde/window-decorator-kde4/window.cpp
+++ compiz/kde/window-decorator-kde4/window.cpp
@@ -1881,6 +1881,8 @@ KWD::Window::moveWindow (QMouseEvent *qme)
 					       qme->globalX (),
 					       qme->globalY (),
 					       direction);
+    mFakeRelease = true;
+
 }
 
 #define OPACITY_STEP (0xffff / 10)

Modified: compiz/kde/window-decorator-kde4/window.h
===================================================================
--- compiz/kde/window-decorator-kde4/window.h
+++ compiz/kde/window-decorator-kde4/window.h
@@ -174,6 +174,17 @@ class Window:public QWidget, public KDecorationBridge {
 	void showKillProcessDialog (Time timestamp);
 	void hideKillProcessDialog (void);
 
+	void setFakeRelease (bool fakeRelease)
+	{
+	    mFakeRelease = fakeRelease;
+	}
+
+	bool getFakeRelease ()
+	{
+	    return mFakeRelease;
+	}
+	
+
     private:
 	void createDecoration (void);
 	void updateShadow (void);
@@ -240,6 +251,7 @@ class Window:public QWidget, public KDecorationBridge {
 	QSize mSize;
 	QProcess *mProcessKiller;
 	KActionCollection mKeys;
+	bool mFakeRelease;
 
 	QAction *mResizeOpAction;
         QAction *mMoveOpAction;


More information about the commits mailing list