diff --git a/src/widgets/widgets/qtabbar.cpp b/src/widgets/widgets/qtabbar.cpp index 149fbefd9d..858ec9c03c 100644 --- a/src/widgets/widgets/qtabbar.cpp +++ b/src/widgets/widgets/qtabbar.cpp @@ -861,7 +861,7 @@ void QTabBarPrivate::refresh() // be safe in case a subclass is also handling move with the tabs if (pressedIndex != -1 && movable - && QGuiApplication::mouseButtons() == Qt::NoButton) { + && mouseButtons == Qt::NoButton) { moveTabFinished(pressedIndex); if (!validIndex(pressedIndex)) pressedIndex = -1; @@ -1782,6 +1782,11 @@ bool QTabBar::event(QEvent *event) event->ignore(); break; #endif + case QEvent::MouseButtonPress: + case QEvent::MouseButtonRelease: + case QEvent::MouseMove: + d->mouseButtons = static_cast(event)->buttons(); + break; default: break; } diff --git a/src/widgets/widgets/qtabbar_p.h b/src/widgets/widgets/qtabbar_p.h index 7bca487d72..4d005af9a9 100644 --- a/src/widgets/widgets/qtabbar_p.h +++ b/src/widgets/widgets/qtabbar_p.h @@ -88,14 +88,17 @@ class Q_WIDGETS_EXPORT QTabBarPrivate : public QWidgetPrivate Q_DECLARE_PUBLIC(QTabBar) public: QTabBarPrivate() - :currentIndex(-1), pressedIndex(-1), firstVisible(0), lastVisible(-1), shape(QTabBar::RoundedNorth), layoutDirty(false), - drawBase(true), scrollOffset(0), hoverIndex(-1), elideModeSetByUser(false), useScrollButtonsSetByUser(false), expanding(true), closeButtonOnTabs(false), - selectionBehaviorOnRemove(QTabBar::SelectRightTab), paintWithOffsets(true), movable(false), - dragInProgress(false), documentMode(false), autoHide(false), changeCurrentOnDrag(false), - switchTabCurrentIndex(-1), switchTabTimerId(0), movingTab(nullptr) + : currentIndex(-1), mouseButtons(Qt::NoButton), pressedIndex(-1), firstVisible(0), lastVisible(-1), + shape(QTabBar::RoundedNorth), layoutDirty(false), drawBase(true), scrollOffset(0), + hoverIndex(-1), elideModeSetByUser(false), useScrollButtonsSetByUser(false), expanding(true), + closeButtonOnTabs(false), selectionBehaviorOnRemove(QTabBar::SelectRightTab), + paintWithOffsets(true), movable(false), dragInProgress(false), documentMode(false), + autoHide(false), changeCurrentOnDrag(false), switchTabCurrentIndex(-1), switchTabTimerId(0), + movingTab(nullptr) {} int currentIndex; + Qt::MouseButtons mouseButtons; int pressedIndex; int firstVisible; int lastVisible;