From ca300e9eb8ccb07bca0eebc1e22131c0757fadeb Mon Sep 17 00:00:00 2001 From: Ali Kianian Date: Wed, 19 Apr 2023 16:49:14 +0300 Subject: [PATCH] QmlDesigner: Fix text selection bug for code editor The event is returned to the parent hierarchy when the position is not in the scrollbars area. Task-number: QDS-9726 Change-Id: Id781650e15035a26f282990d7ee387b4417bc6eb Reviewed-by: Mahmoud Badri Reviewed-by: Thomas Hartmann --- src/libs/utils/transientscroll.cpp | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/libs/utils/transientscroll.cpp b/src/libs/utils/transientscroll.cpp index e056eac7d0e..844d48de3ad 100644 --- a/src/libs/utils/transientscroll.cpp +++ b/src/libs/utils/transientscroll.cpp @@ -41,24 +41,31 @@ public: } } - inline void checkToFlashScroll(QPointer scrollBar, const QPoint &pos) + inline bool checkToFlashScroll(QPointer scrollBar, const QPoint &pos) { if (scrollBar.isNull()) - return; + return false; if (!scrollBar->style()->styleHint( QStyle::SH_ScrollBar_Transient, nullptr, scrollBar)) - return; + return false; - if (scrollBarRect(scrollBar).contains(pos)) + if (scrollBarRect(scrollBar).contains(pos)) { scrollBar->flash(); + return true; + } + + return false; } - inline void checkToFlashScroll(const QPoint &pos) + inline bool checkToFlashScroll(const QPoint &pos) { - checkToFlashScroll(verticalScrollBar, pos); - checkToFlashScroll(horizontalScrollBar, pos); + bool coversScroll = checkToFlashScroll(verticalScrollBar, pos); + if (!coversScroll) + coversScroll |= checkToFlashScroll(horizontalScrollBar, pos); + + return coversScroll; } inline void installViewPort(QObject *eventHandler) { @@ -126,8 +133,8 @@ bool TransientScrollAreaSupport::eventFilter(QObject *watched, QEvent *event) if (watched == d->viewPort){ QMouseEvent *mouseEvent = static_cast(event); if (mouseEvent) { - d->checkToFlashScroll(mouseEvent->pos()); - return true; + if (d->checkToFlashScroll(mouseEvent->pos())) + return true; } } }