[LyX/2.3.x] Workaround Qtbug where QAbstractScrollArea::mouseMoveEvent(...) is called falsely when quickly double tapping on a touchpad of a notebook running Windows (only for specific Qt Versions)
Eugene Chornyi
yu_jin at lyx.org
Thu Sep 10 19:17:15 UTC 2020
commit 0638574dc9a3e672874dbd0fe6ba6176cae4b194
Author: Eugene Chornyi <yu_jin at lyx.org>
Date: Thu Jul 9 09:36:12 2020 +0200
Workaround Qtbug where QAbstractScrollArea::mouseMoveEvent(...)
is called falsely when quickly double tapping on a touchpad of a notebook running Windows (only for specific Qt Versions)
---
src/frontends/qt4/GuiWorkArea.cpp | 19 +++++++++++++++++++
status.23x | 2 ++
2 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/src/frontends/qt4/GuiWorkArea.cpp b/src/frontends/qt4/GuiWorkArea.cpp
index 95cff6d..046199d 100644
--- a/src/frontends/qt4/GuiWorkArea.cpp
+++ b/src/frontends/qt4/GuiWorkArea.cpp
@@ -858,6 +858,10 @@ void GuiWorkArea::mouseReleaseEvent(QMouseEvent * e)
FuncRequest const cmd(LFUN_MOUSE_RELEASE, e->x(), e->y(),
q_button_state(e->button()), q_key_state(e->modifiers()));
+#if (QT_VERSION > QT_VERSION_CHECK(5,10,1) && \
+ QT_VERSION < QT_VERSION_CHECK(5,15,1))
+ d->synthetic_mouse_event_.cmd = cmd; // QtBug QAbstractScrollArea::mouseMoveEvent
+#endif
d->dispatch(cmd);
e->accept();
}
@@ -865,6 +869,21 @@ void GuiWorkArea::mouseReleaseEvent(QMouseEvent * e)
void GuiWorkArea::mouseMoveEvent(QMouseEvent * e)
{
+#if (QT_VERSION > QT_VERSION_CHECK(5,10,1) && \
+ QT_VERSION < QT_VERSION_CHECK(5,15,1))
+ // cancel the event if the coordinates didn't change, this is due to QtBug
+ // QAbstractScrollArea::mouseMoveEvent, the event is triggered falsely when quickly
+ // double tapping a touchpad. To test: try to select a word by quickly double tapping
+ // on a touchpad while hovering the cursor over that word in the work area.
+ // This bug does not occur on Qt versions 5.10.1 and below. Only Windows seems to be affected.
+ // ML thread: https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg211699.html
+ // Qt bugtracker: https://bugreports.qt.io/browse/QTBUG-85431
+ // Bug was fixed in Qt 5.15.1
+ if (e->x() == d->synthetic_mouse_event_.cmd.x() && // QtBug QAbstractScrollArea::mouseMoveEvent
+ e->y() == d->synthetic_mouse_event_.cmd.y()) // QtBug QAbstractScrollArea::mouseMoveEvent
+ return; // QtBug QAbstractScrollArea::mouseMoveEvent
+#endif
+
// we kill the triple click if we move
doubleClickTimeout();
FuncRequest cmd(LFUN_MOUSE_MOTION, e->x(), e->y(),
diff --git a/status.23x b/status.23x
index 0ae9eff..57906be 100644
--- a/status.23x
+++ b/status.23x
@@ -91,6 +91,8 @@ What's new
- Fix display bug when typing in a paragraph where row heights change (bug 11601).
+- Fix wrong marking-text-behavior with doubleclick on notebook touchpads (Windows)
+
- Fix spacing of limits of sum-like operators in display style.
- Fix positioning of super- and subscripts with integral signs.
More information about the lyx-cvs
mailing list