Make sure that the workaround patch is reverted:
$ git show commit d698010c96820bf6de84e6ea28f7003974ec9075 Author: Kousuke Ebihara <[email protected]> Date: Wed Jul 11 23:42:26 2012 +0900 Revert "[WORKAROUND] changed to execute gesture action even if it can't get any gesture-windows" This reverts commit 11e4b3d6cc0ca313ec0d29f45546eb3b9850d187. diff --git a/src/touchegg/gestures/handler/GestureHandler.cpp b/src/touchegg/gestures/handler/GestureHandler.cpp index 3180cec..3dece6c 100644 --- a/src/touchegg/gestures/handler/GestureHandler.cpp +++ b/src/touchegg/gestures/handler/GestureHandler.cpp @@ -196,14 +196,10 @@ Gesture *GestureHandler::createGesture(const QString &type, int id, return NULL; // Vemos sobre que ventana se ha ejecutado - int childWindowId = attrs.value(GEIS_GESTURE_ATTRIBUTE_CHILD_WINDOW_ID).toInt(); - Window gestureWindow = this->getGestureWindow(childWindowId); - - if (gestureWindow == None) { - qDebug() << "[+] Missing gesture window:"; - qDebug() << "\tChild Window Id ->" << childWindowId; - } - + Window gestureWindow = this->getGestureWindow( + attrs.value(GEIS_GESTURE_ATTRIBUTE_CHILD_WINDOW_ID).toInt()); + if (gestureWindow == None) + return NULL; QString appClass = this->getAppClass(gestureWindow); // Creamos y asignamos la acción asociada al gesto
Check my debug configuration:
$ git diff
diff --git a/touchegg.pro b/touchegg.pro
index 520d4f8..4cb0b00 100644
--- a/touchegg.pro
+++ b/touchegg.pro
@@ -11,6 +11,8 @@ INSTALLS += target config
include(src/touchegg/touchegg.pri)
+CONFIG += debug
+
OTHER_FILES += \
documentation/doxyfile_es \
documentation/doxyfile_en \
Make minimize touchegg.conf:
$ cat ~/.config/touchegg/touchegg.conf
<touchégg>
<settings>
<property name="composed_gestures_time">0</property>
</settings>
<application name="All">
<gesture type="DRAG" fingers="4" direction="UP">
<action type="SEND_KEYS">Super+W</action>
</gesture>
</application>
</touchégg>
Build:
$ make clean && qmake && make
Execute compiled binary:
$ /home/co3k/src/touchegg/touchegg
Check pid of touchegg:
$ ps ax | grep touchegg 16490 pts/2 Sl+ 0:00 /home/co3k/src/touchegg/touchegg
Execute gdb:
# gdb
**snip**
(gdb) attach 16490
Attaching to process 16490
Reading symbols from /home/co3k/src/touchegg/touchegg...done.
Reading symbols from /usr/lib/i386-linux-gnu/libutouch-geis.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/i386-linux-gnu/libutouch-geis.so.1
**snip**
(gdb) b GestureHandler::getGestureWindow
Breakpoint 1 at 0x80553ed: file src/touchegg/gestures/handler/GestureHandler.cpp, line 231.
(gdb) c
Continuing.
Breakpoint 1, GestureHandler::getGestureWindow (this=0x82d2728, window=176) at src/touchegg/gestures/handler/GestureHandler.cpp:231
231 Window topIn = this->getTopLevelWindow(window);
(gdb) s
GestureHandler::getTopLevelWindow (this=0x82d2728, window=176) at src/touchegg/gestures/handler/GestureHandler.cpp:283
283 &numChildren) != 0) {
(gdb) n
282 if (XQueryTree(QX11Info::display(), window, &root, &parent, &children,
(gdb)
284 if (children != NULL)
(gdb) print window
$1 = 176
(gdb) print root
$2 = 176
(gdb) print parent
$3 = 0
(gdb) print children
$4 = (Window *) 0x86ada80
(gdb) n
285 XFree(children);
(gdb)
287 if (parent == root)
(gdb)
290 return this->getTopLevelWindow(parent);
(gdb) print parent
$5 = 0
(gdb) s
GestureHandler::getTopLevelWindow (this=0x82d2728, window=0) at src/touchegg/gestures/handler/GestureHandler.cpp:283
283 &numChildren) != 0) {
(gdb) n
282 if (XQueryTree(QX11Info::display(), window, &root, &parent, &children,
(gdb) print window
$6 = 0
(gdb) print root
$7 = 0
(gdb) print parent
$8 = 134600510
(gdb) print children
$9 = (Window *) 0xbfe30648
(gdb) n
293 return None;
(gdb)
295 }
(gdb)
295 }
(gdb)
GestureHandler::getGestureWindow (this=0x82d2728, window=176) at src/touchegg/gestures/handler/GestureHandler.cpp:232
232 if (topIn == None)
(gdb) print topIn
$10 = 0
(gdb) n
233 return None;
(gdb)
274 }
(gdb)
GestureHandler::createGesture (this=0x82d2728, type=..., id=0, attrs=..., isComposedGesture=false) at src/touchegg/gestures/handler/GestureHandler.cpp:201
201 if (gestureWindow == None)
(gdb) print gestureWindow
$11 = 0