From a3193fe273c3f2c3b5493f77724a4bc099ae5e36 Mon Sep 17 00:00:00 2001 From: Dmitry Kazakov Date: Mon, 11 Mar 2019 16:49:31 +0300 Subject: Add a hacky patch that ensures QTabletEvents to be ignored in distribution builds If we ensure that all the tablet events are ignored, then Qt will always generate synthesized mouse events, avoiding the problem of lost Enter/Leave events. We also mark our own build of Qt about the presence of the fix (therefore, it doesn't need this hack). --- libs/ui/input/kis_input_manager.cpp | 20 ++++++++++++++++ diff --git a/libs/ui/input/kis_input_manager.cpp b/libs/ui/input/kis_input_manager.cpp index 30a4677..d173543 100644 --- a/libs/ui/input/kis_input_manager.cpp +++ b/libs/ui/input/kis_input_manager.cpp @@ -496,6 +496,13 @@ bool KisInputManager::eventFilterImpl(QEvent * event) //Reset signal compressor to prevent processing events before press late d->resetCompressor(); d->eatOneMousePress(); + +#if defined Q_OS_LINUX && !defined QT_HAS_ENTER_LEAVE_PATCH + // remove this hack when this patch is integrated: + // https://codereview.qt-project.org/#/c/255384/ + event->setAccepted(false); +#endif + break; } case QEvent::TabletMove: { @@ -517,6 +524,12 @@ bool KisInputManager::eventFilterImpl(QEvent * event) */ d->blockMouseEvents(); +#if defined Q_OS_LINUX && !defined QT_HAS_ENTER_LEAVE_PATCH + // remove this hack when this patch is integrated: + // https://codereview.qt-project.org/#/c/255384/ + event->setAccepted(false); +#endif + break; } case QEvent::TabletRelease: { @@ -529,6 +542,13 @@ bool KisInputManager::eventFilterImpl(QEvent * event) retval = d->matcher.buttonReleased(tabletEvent->button(), tabletEvent); retval = true; event->setAccepted(true); + +#if defined Q_OS_LINUX && !defined QT_HAS_ENTER_LEAVE_PATCH + // remove this hack when this patch is integrated: + // https://codereview.qt-project.org/#/c/255384/ + event->setAccepted(false); +#endif + break; } -- cgit v1.1