Merge lp:~chasedouglas/kubuntu-packaging/qt-upstream-xi into lp:~kubuntu-packagers/kubuntu-packaging/qt

Proposed by Chase Douglas
Status: Rejected
Rejected by: Chase Douglas
Proposed branch: lp:~chasedouglas/kubuntu-packaging/qt-upstream-xi
Merge into: lp:~kubuntu-packagers/kubuntu-packaging/qt
Diff against target: 311 lines (+56/-87)
3 files modified
debian/changelog (+6/-1)
debian/control (+1/-1)
debian/patches/kubuntu_28_xi2.1.patch (+49/-85)
To merge this branch: bzr merge lp:~chasedouglas/kubuntu-packaging/qt-upstream-xi
Reviewer Review Type Date Requested Status
Kubuntu Packagers Pending
Review via email: mp+88912@code.launchpad.net

Description of the change

Refresh XI multitouch patch.

The previous version was written for the prototype implementation of XInput multitouch support in Ubuntu 11.04 and 11.10. Ubuntu 12.04 will have the upstream implementation, which has some differences from the prototype implementation. This branch includes the necessary changes to continue the same level of functionality.

To post a comment you must log in.
Revision history for this message
Chase Douglas (chasedouglas) wrote :

I realized I had permissions to push this change directly to the packaging branch. No review needed.

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'debian/changelog'
--- debian/changelog 2012-01-17 13:41:16 +0000
+++ debian/changelog 2012-01-17 18:08:24 +0000
@@ -1,9 +1,14 @@
1qt4-x11 (4:4.8.0-1ubuntu2) UNRELEASED; urgency=low1qt4-x11 (4:4.8.0-1ubuntu2) UNRELEASED; urgency=low
22
3 [ Felix Geyer ]
3 * Fix include path of qdeclarativeitemchangelistener_p.h in4 * Fix include path of qdeclarativeitemchangelistener_p.h in
4 kubuntu_97_a11y_qt_and_qml_backport.diff. This caused QtCreator to FTBFS.5 kubuntu_97_a11y_qt_and_qml_backport.diff. This caused QtCreator to FTBFS.
56
6 -- Felix Geyer <debfx@ubuntu.com> Tue, 17 Jan 2012 14:39:43 +01007 [ Chase Douglas ]
8 * Update kubuntu_28_xi2.1.patch for upstream multitouch implementation
9 * Update Build-Depends on libxi-dev >= 1.5.99.2 for multitouch support
10
11 -- Chase Douglas <chase.douglas@ubuntu.com> Tue, 17 Jan 2012 09:51:48 -0800
712
8qt4-x11 (4:4.8.0-1ubuntu1) precise; urgency=low13qt4-x11 (4:4.8.0-1ubuntu1) precise; urgency=low
914
1015
=== modified file 'debian/control'
--- debian/control 2011-12-30 17:08:51 +0000
+++ debian/control 2012-01-17 18:08:24 +0000
@@ -42,7 +42,7 @@
42 libxcursor-dev,42 libxcursor-dev,
43 libxext-dev,43 libxext-dev,
44 libxft-dev,44 libxft-dev,
45 libxi-dev,45 libxi-dev (>= 1.5.99.2),
46 libxinerama-dev,46 libxinerama-dev,
47 libxmu-dev,47 libxmu-dev,
48 libxrandr-dev,48 libxrandr-dev,
4949
=== modified file 'debian/patches/kubuntu_28_xi2.1.patch'
--- debian/patches/kubuntu_28_xi2.1.patch 2012-01-07 10:15:07 +0000
+++ debian/patches/kubuntu_28_xi2.1.patch 2012-01-17 18:08:24 +0000
@@ -1,18 +1,3 @@
1---
2 config.tests/x11/xinput2/xinput2.cpp | 75 ++++++
3 config.tests/x11/xinput2/xinput2.pro | 4
4 configure | 46 +++
5 examples/touch/fingerpaint/scribblearea.cpp | 2
6 src/gui/kernel/kernel.pri | 1
7 src/gui/kernel/qapplication_p.h | 29 ++
8 src/gui/kernel/qapplication_x11.cpp | 350 +++++++++++++++++++++++++++-
9 src/gui/kernel/qevent.h | 1
10 src/gui/kernel/qt_x11_p.h | 27 +-
11 src/gui/kernel/qwidget.cpp | 2
12 src/gui/kernel/qwidget_p.h | 5
13 src/gui/kernel/qwidget_x11.cpp | 39 +++
14 12 files changed, 556 insertions(+), 25 deletions(-)
15
16--- /dev/null1--- /dev/null
17+++ b/config.tests/x11/xinput2/xinput2.cpp2+++ b/config.tests/x11/xinput2/xinput2.cpp
18@@ -0,0 +1,75 @@3@@ -0,0 +1,75 @@
@@ -61,8 +46,8 @@
61+#include <X11/extensions/XInput2.h>46+#include <X11/extensions/XInput2.h>
62+#include <X11/extensions/Xge.h>47+#include <X11/extensions/Xge.h>
63+48+
64+#ifndef XInput_2_149+#if XI_2_Major < 2 || XI_2_Minor < 2
65+# error "Missing XInput_2_1 #define"50+# error "Missing XInput 2.2 or later"
66+#endif51+#endif
67+52+
68+int main(int, char **)53+int main(int, char **)
@@ -113,7 +98,7 @@
113 ;;98 ;;
114 #Qt style yes options99 #Qt style yes options
115- -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-egl|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-carbon|-universal|-harfbuzz|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-audio-backend|-svg|-declarative|-declarative-debug|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config|-s60|-usedeffiles|-icu)100- -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-egl|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-carbon|-universal|-harfbuzz|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-audio-backend|-svg|-declarative|-declarative-debug|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config|-s60|-usedeffiles|-icu)
116+ -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput2|-xinput|-egl|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-carbon|-universal|-harfbuzz|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-audio-backend|-svg|-declarative|-declarative-debug|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config|-s60|-usedeffiles|-icu)101+ -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-xinput2|-egl|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-carbon|-universal|-harfbuzz|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-audio-backend|-svg|-declarative|-declarative-debug|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config|-s60|-usedeffiles|-icu)
117 VAR=`echo $1 | sed "s,^-\(.*\),\1,"`102 VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
118 VAL=yes103 VAL=yes
119 ;;104 ;;
@@ -195,19 +180,19 @@
195 if [ "$CFG_XINPUT" = "yes" ]; then180 if [ "$CFG_XINPUT" = "yes" ]; then
196 QT_CONFIG="$QT_CONFIG xinput tablet"181 QT_CONFIG="$QT_CONFIG xinput tablet"
197 fi182 fi
198@@ -8340,6 +8376,7 @@ if [ "$XPLATFORM_SYMBIAN" = "no" ]; then183@@ -8341,6 +8377,7 @@ if [ "$XPLATFORM_SYMBIAN" = "no" ]; then
199 [ "$CFG_XSHAPE" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SHAPE"
200 [ "$CFG_XVIDEO" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XVIDEO"184 [ "$CFG_XVIDEO" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XVIDEO"
201 [ "$CFG_XSYNC" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XSYNC"185 [ "$CFG_XSYNC" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XSYNC"
202+ [ "$CFG_XINPUT2" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XINPUT2"
203 [ "$CFG_XINPUT" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XINPUT QT_NO_TABLET"186 [ "$CFG_XINPUT" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XINPUT QT_NO_TABLET"
187+ [ "$CFG_XINPUT2" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XINPUT2"
204 188
205 [ "$CFG_XCURSOR" = "runtime" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_RUNTIME_XCURSOR"189 [ "$CFG_XCURSOR" = "runtime" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_RUNTIME_XCURSOR"
190 [ "$CFG_XINERAMA" = "runtime" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_RUNTIME_XINERAMA"
206@@ -8904,6 +8941,7 @@ if [ "$PLATFORM_X11" = "yes" ]; then191@@ -8904,6 +8941,7 @@ if [ "$PLATFORM_X11" = "yes" ]; then
207 echo "Xfixes support ......... $CFG_XFIXES"192 echo "Xfixes support ......... $CFG_XFIXES"
208 echo "Xrandr support ......... $CFG_XRANDR"193 echo "Xrandr support ......... $CFG_XRANDR"
209 echo "Xrender support ........ $CFG_XRENDER"194 echo "Xrender support ........ $CFG_XRENDER"
210+ echo "Xi2 support ............ $CFG_XINPUT2"195+ echo "XInput2 support ........ $CFG_XINPUT2"
211 echo "Xi support ............. $CFG_XINPUT"196 echo "Xi support ............. $CFG_XINPUT"
212 echo "MIT-SHM support ........ $CFG_MITSHM"197 echo "MIT-SHM support ........ $CFG_MITSHM"
213 echo "FontConfig support ..... $CFG_FONTCONFIG"198 echo "FontConfig support ..... $CFG_FONTCONFIG"
@@ -334,24 +319,7 @@
334 extensionName = "XInputExtension";319 extensionName = "XInputExtension";
335 else if (err->request_code == X11->mitshm_major)320 else if (err->request_code == X11->mitshm_major)
336 extensionName = "MIT-SHM";321 extensionName = "MIT-SHM";
337@@ -1649,6 +1658,16 @@ static void getXDefault(const char *grou322@@ -1681,9 +1690,14 @@ void qt_init(QApplicationPrivate *priv,
338 }
339 #endif
340
341+inline void copy(QApplicationPrivate::TouchDeviceInfo::Valuator &dst,
342+ const XITouchValuatorClassInfo &src)
343+{
344+ dst.number = src.number;
345+ dst.label = src.label;
346+ dst.min = src.min;
347+ dst.max = src.max;
348+ dst.resolution = src.resolution;
349+}
350+
351 // ### This should be static but it isn't because of the friend declaration
352 // ### in qpaintdevice.h which then should have a static too but can't have
353 // ### it because "storage class specifiers invalid in friend function
354@@ -1681,9 +1700,14 @@ void qt_init(QApplicationPrivate *priv,
355 323
356 // XInputExtension324 // XInputExtension
357 X11->use_xinput = false;325 X11->use_xinput = false;
@@ -367,7 +335,7 @@
367 335
368 X11->use_xkb = false;336 X11->use_xkb = false;
369 X11->xkb_major = 0;337 X11->xkb_major = 0;
370@@ -2154,14 +2178,26 @@ void qt_init(QApplicationPrivate *priv,338@@ -2154,14 +2168,26 @@ void qt_init(QApplicationPrivate *priv,
371 #endif // QT_RUNTIME_XINERAMA339 #endif // QT_RUNTIME_XINERAMA
372 #endif // QT_NO_XINERAMA340 #endif // QT_NO_XINERAMA
373 341
@@ -396,16 +364,18 @@
396 &X11->xinput_eventbase, &X11->xinput_errorbase);364 &X11->xinput_eventbase, &X11->xinput_errorbase);
397 if (X11->use_xinput) {365 if (X11->use_xinput) {
398 X11->ptrXCloseDevice = XINPUT_LOAD(XCloseDevice);366 X11->ptrXCloseDevice = XINPUT_LOAD(XCloseDevice);
399@@ -3224,6 +3260,8 @@ int QApplication::x11ProcessEvent(XEvent367@@ -3224,6 +3250,10 @@ int QApplication::x11ProcessEvent(XEvent
400 Q_D(QApplication);368 Q_D(QApplication);
401 QScopedLoopLevelCounter loopLevelCounter(d->threadData);369 QScopedLoopLevelCounter loopLevelCounter(d->threadData);
402 370
371+#if !defined(QT_NO_XINPUT2)
403+ bool isXI2Event = false;372+ bool isXI2Event = false;
373+#endif
404+374+
405 #ifdef ALIEN_DEBUG375 #ifdef ALIEN_DEBUG
406 //qDebug() << "QApplication::x11ProcessEvent:" << event->type;376 //qDebug() << "QApplication::x11ProcessEvent:" << event->type;
407 #endif377 #endif
408@@ -3254,6 +3292,16 @@ int QApplication::x11ProcessEvent(XEvent378@@ -3254,6 +3284,16 @@ int QApplication::x11ProcessEvent(XEvent
409 case SelectionClear:379 case SelectionClear:
410 X11->time = event->xselectionclear.time;380 X11->time = event->xselectionclear.time;
411 break;381 break;
@@ -422,7 +392,7 @@
422 default:392 default:
423 break;393 break;
424 }394 }
425@@ -3267,7 +3315,43 @@ int QApplication::x11ProcessEvent(XEvent395@@ -3267,7 +3307,43 @@ int QApplication::x11ProcessEvent(XEvent
426 }396 }
427 #endif397 #endif
428 398
@@ -467,7 +437,7 @@
467 437
468 if (wPRmapper) { // just did a widget reparent?438 if (wPRmapper) { // just did a widget reparent?
469 if (widget == 0) { // not in std widget mapper439 if (widget == 0) { // not in std widget mapper
470@@ -3279,6 +3363,15 @@ int QApplication::x11ProcessEvent(XEvent440@@ -3279,6 +3355,15 @@ int QApplication::x11ProcessEvent(XEvent
471 case XKeyRelease:441 case XKeyRelease:
472 widget = qPRFindWidget(event->xany.window);442 widget = qPRFindWidget(event->xany.window);
473 break;443 break;
@@ -483,18 +453,21 @@
483 }453 }
484 }454 }
485 else if (widget->testAttribute(Qt::WA_WState_Reparented))455 else if (widget->testAttribute(Qt::WA_WState_Reparented))
486@@ -3913,6 +4006,10 @@ int QApplication::x11ProcessEvent(XEvent456@@ -3913,6 +3998,13 @@ int QApplication::x11ProcessEvent(XEvent
487 }457 }
488 break;458 break;
489 459
460+#if !defined(QT_NO_XINPUT2)
490+ case GenericEvent:461+ case GenericEvent:
491+ if (isXI2Event)462+ if (isXI2Event)
492+ widget->translateXI2Event((XIEvent *)event->xcookie.data);463+ widget->translateXI2Event((XIEvent *)event->xcookie.data);
493+ break;464+ break;
465+#endif
466+
494 default:467 default:
495 break;468 break;
496 }469 }
497@@ -5135,6 +5232,191 @@ bool QETWidget::translatePropertyEvent(c470@@ -5135,6 +5227,191 @@ bool QETWidget::translatePropertyEvent(c
498 return true;471 return true;
499 }472 }
500 473
@@ -686,11 +659,21 @@
686 659
687 //660 //
688 // Paint event translation661 // Paint event translation
689@@ -6282,11 +6564,61 @@ void QApplicationPrivate::_q_readRX71Mul662@@ -6282,11 +6559,77 @@ void QApplicationPrivate::_q_readRX71Mul
690 663
691 #else // !QT_RX71_MULTITOUCH664 #else // !QT_RX71_MULTITOUCH
692 665
693+#if !defined(QT_NO_XINPUT2)666+#if !defined(QT_NO_XINPUT2)
667+static inline void copy(QApplicationPrivate::TouchDeviceInfo::Valuator &dst,
668+ const XIValuatorClassInfo &src)
669+{
670+ dst.number = src.number;
671+ dst.label = src.label;
672+ dst.min = src.min;
673+ dst.max = src.max;
674+ dst.resolution = src.resolution;
675+}
676+
694+void QApplicationPrivate::x11GetTouchDeviceInfo()677+void QApplicationPrivate::x11GetTouchDeviceInfo()
695+{678+{
696+ int count = 0;679+ int count = 0;
@@ -699,17 +682,20 @@
699+ for (int i = 0; i < count; ++i) {682+ for (int i = 0; i < count; ++i) {
700+ if (!devices[i].enabled)683+ if (!devices[i].enabled)
701+ continue;684+ continue;
685+
686+ bool is_touch = false;
687+ QApplicationPrivate::TouchDeviceInfo tdi;
688+
702+ for (int k = 0; k < devices[i].num_classes; ++k) {689+ for (int k = 0; k < devices[i].num_classes; ++k) {
703+ XIAnyClassInfo *xiclassinfo = devices[i].classes[k];690+ XIAnyClassInfo *xiclassinfo = devices[i].classes[k];
704+ if (xiclassinfo->type == XITouchClass) {691+ if (xiclassinfo->type == XITouchClass) {
692+ is_touch = true;
705+ XITouchClassInfo *t = (XITouchClassInfo *)xiclassinfo;693+ XITouchClassInfo *t = (XITouchClassInfo *)xiclassinfo;
706+ QApplicationPrivate::TouchDeviceInfo& tdi = touchDevices[devices[i].deviceid];
707+ tdi.deviceid = devices[i].deviceid;694+ tdi.deviceid = devices[i].deviceid;
708+ tdi.directTouch = t->mode == XIDirectTouch;695+ tdi.directTouch = t->mode == XIDirectTouch;
709+ tdi.maxTouches = t->num_touches;696+ tdi.maxTouches = t->num_touches;
710+ } else if (xiclassinfo->type == XITouchValuatorClass) {697+ } else if (xiclassinfo->type == XIValuatorClass) {
711+ XITouchValuatorClassInfo *v = (XITouchValuatorClassInfo *)xiclassinfo;698+ XIValuatorClassInfo *v = (XIValuatorClassInfo *)xiclassinfo;
712+ QApplicationPrivate::TouchDeviceInfo &tdi = touchDevices[devices[i].deviceid];
713+ tdi.numValuators++;699+ tdi.numValuators++;
714+ if (v->label == ATOM(XAbsMTTouchMajor))700+ if (v->label == ATOM(XAbsMTTouchMajor))
715+ copy(tdi.xivTouchMajor, *v);701+ copy(tdi.xivTouchMajor, *v);
@@ -723,6 +709,9 @@
723+ copy(tdi.xivPosY, *v);709+ copy(tdi.xivPosY, *v);
724+ }710+ }
725+ }711+ }
712+
713+ if (is_touch)
714+ touchDevices[devices[i].deviceid] = tdi;
726+ }715+ }
727+ XIFreeDeviceInfo(devices);716+ XIFreeDeviceInfo(devices);
728+ }717+ }
@@ -826,39 +815,14 @@
826 #endif815 #endif
827--- a/src/gui/kernel/qwidget_p.h816--- a/src/gui/kernel/qwidget_p.h
828+++ b/src/gui/kernel/qwidget_p.h817+++ b/src/gui/kernel/qwidget_p.h
829@@ -688,6 +688,8 @@ public:818@@ -789,6 +789,7 @@ public:
830 819 void updateX11AcceptFocus();
831 inline QRect mapFromWS(const QRect &r) const820 QPoint mapToGlobal(const QPoint &pos) const;
832 { QRect rr(r); rr.translate(data.wrect.topLeft()); return rr; }821 QPoint mapFromGlobal(const QPoint &pos) const;
833+
834+ void registerTouchWindow();822+ void registerTouchWindow();
835 #endif823 #elif defined(Q_WS_WIN) // <--------------------------------------------------------- WIN
836 824 uint noPaintOnScreen : 1; // see qwidget_win.cpp ::paintEngine()
837 // Variables.825 #ifndef QT_NO_GESTURES
838@@ -802,7 +804,6 @@ public:
839 void unregisterOleDnd(QWidget *widget, QOleDropTarget *target);
840 #endif
841 void grabMouseWhileInWindow();
842- void registerTouchWindow();
843 void winSetupGestures();
844 #elif defined(Q_WS_MAC) // <--------------------------------------------------------- MAC
845 // This is new stuff
846@@ -886,7 +887,6 @@ public:
847 static OSStatus qt_window_event(EventHandlerCallRef er, EventRef event, void *);
848 static OSStatus qt_widget_event(EventHandlerCallRef er, EventRef event, void *);
849 static bool qt_widget_rgn(QWidget *, short, RgnHandle, bool);
850- void registerTouchWindow(bool enable = true);
851 #elif defined(Q_WS_QWS) // <--------------------------------------------------------- QWS
852 void setMaxWindowState_helper();
853 void setFullScreenSize_helper();
854@@ -914,7 +914,6 @@ public:
855 bool fixNativeOrientationCalled;
856 void s60UpdateIsOpaque();
857 void reparentChildren();
858- void registerTouchWindow();
859 QList<WId> widCleanupList;
860 #endif
861
862--- a/src/gui/kernel/qwidget_x11.cpp826--- a/src/gui/kernel/qwidget_x11.cpp
863+++ b/src/gui/kernel/qwidget_x11.cpp827+++ b/src/gui/kernel/qwidget_x11.cpp
864@@ -873,7 +873,13 @@ void QWidgetPrivate::create_sys(WId wind828@@ -873,7 +873,13 @@ void QWidgetPrivate::create_sys(WId wind
@@ -905,7 +869,7 @@
905+ QVector<uchar> mask_vector(mask_len, 0);869+ QVector<uchar> mask_vector(mask_len, 0);
906+ uchar *bitmask = mask_vector.data();870+ uchar *bitmask = mask_vector.data();
907+871+
908+ xieventmask.deviceid = XIAllDevices;872+ xieventmask.deviceid = XIAllMasterDevices;
909+ xieventmask.mask = bitmask;873+ xieventmask.mask = bitmask;
910+ xieventmask.mask_len = mask_len;874+ xieventmask.mask_len = mask_len;
911+875+

Subscribers

People subscribed via source and target branches