diff options
-rw-r--r-- | doc/ScintillaHistory.html | 11 | ||||
-rw-r--r-- | qt/ScintillaEditBase/ScintillaEditBase.cpp | 20 |
2 files changed, 27 insertions, 4 deletions
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index 4067efa14..ba416abe2 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -588,6 +588,17 @@ </table> <h2>Releases</h2> <h3> + <a href="https://www.scintilla.org/scintilla555.zip">Release 5.5.5</a> + </h3> + <ul> + <li> + Released 18 December 2024. + </li> + <li> + Fix bug on Qt where double-click stopped working when Scintilla instance had been running for weeks. + </li> + </ul> + <h3> <a href="https://www.scintilla.org/scintilla554.zip">Release 5.5.4</a> </h3> <ul> diff --git a/qt/ScintillaEditBase/ScintillaEditBase.cpp b/qt/ScintillaEditBase/ScintillaEditBase.cpp index 5e2196d85..d220305b4 100644 --- a/qt/ScintillaEditBase/ScintillaEditBase.cpp +++ b/qt/ScintillaEditBase/ScintillaEditBase.cpp @@ -299,6 +299,18 @@ static int modifierTranslated(int sciModifier) } } +namespace { + +// Convert QElapsedTimer timestamp qint64 into unsigned int milliseconds wanted by Editor methods. +unsigned int TimeOfEvent(const QElapsedTimer &timer) +{ + // Wrap every 2 billion milliseconds -> 24 days + constexpr qint64 maxTime = 2'000'000'000; + return static_cast<unsigned int>(timer.elapsed() % maxTime); +} + +} + void ScintillaEditBase::mousePressEvent(QMouseEvent *event) { Point pos = PointFromQPoint(event->pos()); @@ -320,11 +332,11 @@ void ScintillaEditBase::mousePressEvent(QMouseEvent *event) bool ctrl = QApplication::keyboardModifiers() & Qt::ControlModifier; bool alt = QApplication::keyboardModifiers() & modifierTranslated(sqt->rectangularSelectionModifier); - sqt->ButtonDownWithModifiers(pos, time.elapsed(), ModifierFlags(shift, ctrl, alt)); + sqt->ButtonDownWithModifiers(pos, TimeOfEvent(time), ModifierFlags(shift, ctrl, alt)); } if (event->button() == Qt::RightButton) { - sqt->RightButtonDownWithModifiers(pos, time.elapsed(), ModifiersOfKeyboard()); + sqt->RightButtonDownWithModifiers(pos, TimeOfEvent(time), ModifiersOfKeyboard()); } } @@ -332,7 +344,7 @@ void ScintillaEditBase::mouseReleaseEvent(QMouseEvent *event) { const QPoint point = event->pos(); if (event->button() == Qt::LeftButton) - sqt->ButtonUpWithModifiers(PointFromQPoint(point), time.elapsed(), ModifiersOfKeyboard()); + sqt->ButtonUpWithModifiers(PointFromQPoint(point), TimeOfEvent(time), ModifiersOfKeyboard()); const sptr_t pos = send(SCI_POSITIONFROMPOINT, point.x(), point.y()); const sptr_t line = send(SCI_LINEFROMPOSITION, pos); @@ -358,7 +370,7 @@ void ScintillaEditBase::mouseMoveEvent(QMouseEvent *event) const KeyMod modifiers = ModifierFlags(shift, ctrl, alt); - sqt->ButtonMoveWithModifiers(pos, time.elapsed(), modifiers); + sqt->ButtonMoveWithModifiers(pos, TimeOfEvent(time), modifiers); } void ScintillaEditBase::contextMenuEvent(QContextMenuEvent *event) |