[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