summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/widgets/kernel/qapplication.cpp2
-rw-r--r--src/widgets/kernel/qapplication_p.h1
-rw-r--r--src/widgets/kernel/qapplication_qpa.cpp28
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp3
4 files changed, 4 insertions, 30 deletions
diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp
index 9d1b9c9921..34b2893e89 100644
--- a/src/widgets/kernel/qapplication.cpp
+++ b/src/widgets/kernel/qapplication.cpp
@@ -3135,8 +3135,6 @@ bool QApplication::notify(QObject *receiver, QEvent *e)
d->toolTipGlobalPos = mouse->globalPos();
d->toolTipWakeUp.start(d->toolTipFallAsleep.isActive()?20:700, this);
}
-
- d->handleAutomaticMouseGrab(w, mouse);
}
bool eventAccepted = mouse->isAccepted();
diff --git a/src/widgets/kernel/qapplication_p.h b/src/widgets/kernel/qapplication_p.h
index a779c294cb..be88e2cdf3 100644
--- a/src/widgets/kernel/qapplication_p.h
+++ b/src/widgets/kernel/qapplication_p.h
@@ -166,7 +166,6 @@ public:
void openPopup(QWidget *popup);
static void setFocusWidget(QWidget *focus, Qt::FocusReason reason);
static QWidget *focusNextPrevChild_helper(QWidget *toplevel, bool next);
- void handleAutomaticMouseGrab(QWidget *widget, QMouseEvent *e);
#ifndef QT_NO_SESSIONMANAGER
QSessionManager *session_manager;
diff --git a/src/widgets/kernel/qapplication_qpa.cpp b/src/widgets/kernel/qapplication_qpa.cpp
index 0afc208571..76e160b24a 100644
--- a/src/widgets/kernel/qapplication_qpa.cpp
+++ b/src/widgets/kernel/qapplication_qpa.cpp
@@ -72,8 +72,7 @@
QT_BEGIN_NAMESPACE
static QString appFont;
-static bool popupGrabOk = false;
-static QPointer<QWidget> autoGrabber;
+static bool popupGrabOk;
extern QWidget *qt_button_down;
extern QWidget *qt_popup_down;
extern bool qt_replay_popup_mouse_event;
@@ -142,28 +141,6 @@ void QApplicationPrivate::notifyActiveWindowChange(QWindow *previous)
QApplication::setActiveWindow(tlw);
}
-void QApplicationPrivate::handleAutomaticMouseGrab(QWidget *widget, QMouseEvent *e)
-{
- // Grab the mouse automatically for current window when any button is pressed,
- // unless there is an active mousegrabber or mouse is being grabbed for a popup.
- if (e->type() == QEvent::MouseButtonPress || e->type() == QEvent::MouseButtonRelease) {
- if (e->buttons() == Qt::NoButton) {
- // No buttons remain pressed, so release the grab unless grab has been acquired
- // for some other reason in the meantime.
- if (autoGrabber && !QWidget::mouseGrabber() && !popupGrabOk)
- qt_widget_private(autoGrabber)->stealMouseGrab(false);
- autoGrabber = 0;
- } else {
- // Some buttons are pressed, grab mouse input for current window,
- // unless there is already an active grab.
- if (!autoGrabber && !QWidget::mouseGrabber() && !popupGrabOk) {
- autoGrabber = widget->window();
- qt_widget_private(autoGrabber)->stealMouseGrab(true);
- }
- }
- }
-}
-
static void ungrabKeyboardForPopup(QWidget *popup)
{
if (QWidget::keyboardGrabber())
@@ -185,9 +162,6 @@ static void grabForPopup(QWidget *popup)
Q_ASSERT(popup->testAttribute(Qt::WA_WState_Created));
popupGrabOk = qt_widget_private(popup)->stealKeyboardGrab(true);
if (popupGrabOk) {
- if (autoGrabber)
- qt_widget_private(autoGrabber)->stealMouseGrab(false);
- autoGrabber = 0;
popupGrabOk = qt_widget_private(popup)->stealMouseGrab(true);
if (!popupGrabOk) {
// transfer grab back to the keyboard grabber if any
diff --git a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
index b731bec875..589b360fbb 100644
--- a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -1792,6 +1792,9 @@ void tst_QGraphicsWidget::updateFocusChainWhenChildDie()
QVERIFY(w);
QTest::mouseMove(view.viewport());
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0);
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("", "QTBUG-23699", Continue);
+#endif
QTRY_COMPARE(qApp->activeWindow(), static_cast<QWidget *>(&view));
QTRY_COMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(w));
}