Accepting request 347694 from home:dimstar:branches:multimedia:libs
- 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
This commit is contained in:
93
vlc-qt5.5-mousepointer.patch
Normal file
93
vlc-qt5.5-mousepointer.patch
Normal file
@@ -0,0 +1,93 @@
|
||||
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
|
||||
|
Reference in New Issue
Block a user