Dominique Leuenberger
a910613a1e
- Add vlc-qt5.5-mousepointer.patch: Fix mouse cursor in video interface (boo#956769). OBS-URL: https://build.opensuse.org/request/show/347694 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/vlc?expand=0&rev=145
94 lines
3.4 KiB
Diff
94 lines
3.4 KiB
Diff
From 729d28e766f37e166000c0c9d15c19138281b754 Mon Sep 17 00:00:00 2001
|
|
From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
|
|
Date: Fri, 23 Oct 2015 22:46:26 +0300
|
|
Subject: [PATCH] qt5: unsubscribe disable motion and XI2 mouse events
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=utf8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
âââââââââââââââââââââââââââââ
|
|
â PARENTAL ADVISORY: R-24 â
|
|
â EXPLICIT CONTENT â
|
|
â INAPPROPRIATE KLUDGY HACK â
|
|
âââââââââââââââââââââââââââââ
|
|
|
|
This extends the existing kludge to catch mouse clicks in the video
|
|
output instead of the Qt framework. From version 5.5, Qt uses XI2 to
|
|
catch mouse events.
|
|
|
|
May or may not interfere with touch devices.
|
|
May or may not interfere with cursor changes.
|
|
May or may not be forward compatible.
|
|
|
|
(cherry picked from commit 4e55554c37e7c55586c41a5e9fc50f393167ac0b)
|
|
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
|
|
---
|
|
configure.ac | 10 ++++++++++
|
|
modules/gui/qt4/components/interface_widgets.cpp | 21 +++++++++++++++++++++
|
|
2 files changed, 31 insertions(+)
|
|
|
|
diff --git a/configure.ac b/configure.ac
|
|
index bed99d9..63a0577 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -3722,6 +3722,16 @@ AS_IF([test "${enable_qt}" != "no"], [
|
|
PKG_CHECK_MODULES([QTX11], [Qt5X11Extras], [
|
|
VLC_ADD_LIBS([qt4],[${QTX11_LIBS}])
|
|
VLC_ADD_CXXFLAGS([qt4],[${QTX11_CFLAGS} -DQT5_HAS_X11])
|
|
+ PKG_CHECK_MODULES([XI], [xi], [
|
|
+ VLC_ADD_LIBS([qt4], [${XI_LIBS}])
|
|
+ VLC_ADD_CXXFLAGS([qt4], [${XI_CFLAGS} -DHAVE_XI])
|
|
+ ], [
|
|
+ PKG_CHECK_EXISTS([Qt5Gui >= 5.5], [
|
|
+ AC_MSG_ERROR([${XI_PKG_ERRORS}.])
|
|
+ ], [
|
|
+ AC_MSG_WARN([${XI_PKG_ERRORS}.])
|
|
+ ])
|
|
+ ])
|
|
],[
|
|
AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
|
|
])
|
|
diff --git a/modules/gui/qt4/components/interface_widgets.cpp b/modules/gui/qt4/components/interface_widgets.cpp
|
|
index 8c30ac0..f433446 100644
|
|
--- a/modules/gui/qt4/components/interface_widgets.cpp
|
|
+++ b/modules/gui/qt4/components/interface_widgets.cpp
|
|
@@ -58,6 +58,9 @@
|
|
|
|
#ifdef Q_WS_X11
|
|
# include <X11/Xlib.h>
|
|
+# ifdef HAVE_XI
|
|
+# include <X11/extensions/XInput2.h>
|
|
+# endif
|
|
# include <qx11info_x11.h>
|
|
#endif
|
|
|
|
@@ -148,7 +151,25 @@ WId VideoWidget::request( int *pi_x, int *pi_y,
|
|
|
|
XGetWindowAttributes( dpy, w, &attr );
|
|
attr.your_event_mask &= ~(ButtonPressMask|ButtonReleaseMask);
|
|
+ attr.your_event_mask &= ~PointerMotionMask;
|
|
XSelectInput( dpy, w, attr.your_event_mask );
|
|
+# ifdef HAVE_XI
|
|
+ int n;
|
|
+ XIEventMask *xi_masks = XIGetSelectedEvents( dpy, w, &n );
|
|
+ if( xi_masks != NULL )
|
|
+ {
|
|
+ for( int i = 0; i < n; i++ )
|
|
+ if( xi_masks[i].mask_len >= 1 )
|
|
+ {
|
|
+ xi_masks[i].mask[0] &= ~XI_ButtonPressMask;
|
|
+ xi_masks[i].mask[0] &= ~XI_ButtonReleaseMask;
|
|
+ xi_masks[i].mask[0] &= ~XI_MotionMask;
|
|
+ }
|
|
+
|
|
+ XISelectEvents( dpy, w, xi_masks, n );
|
|
+ XFree( xi_masks );
|
|
+ }
|
|
+# endif
|
|
#endif
|
|
sync();
|
|
return stable->winId();
|
|
--
|
|
1.7.10.4
|
|
|