summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-06-10 11:26:00 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-06-10 19:59:12 +0200
commitad532ce118b7052be3b69999cef2eb610e66fa88 (patch)
treebf381ad746b5186c0cc26b2de744a191443d4f3a
parentfa5ae7635660cc382d0b0ed3ce728433848e4ec3 (diff)
Fix QToolButton menus showing on primary screens in multiscreen setups
Calculate an initial position based on the current size hint and pass it to QMenuPrivate::exec(), which does screen checks based on it. Amends a78d66743171557d79b16c08be775e3ac15bb4ef. Pick-to: 5.15 Fixes: QTBUG-84462 Task-number: QTBUG-78966 Change-Id: Icae8d2bc0fb50c4c853cfebaa2b2250fc06542e3 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
-rw-r--r--src/widgets/widgets/qtoolbutton.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/widgets/widgets/qtoolbutton.cpp b/src/widgets/widgets/qtoolbutton.cpp
index edd4788806..0b090d2bac 100644
--- a/src/widgets/widgets/qtoolbutton.cpp
+++ b/src/widgets/widgets/qtoolbutton.cpp
@@ -805,7 +805,8 @@ void QToolButtonPrivate::popupTimerDone()
// QTBUG-78966, Delay positioning until after aboutToShow().
auto positionFunction = [q, horizontal](const QSize &sizeHint) {
return positionMenu(q, horizontal, sizeHint); };
- actualMenu->d_func()->exec({}, nullptr, positionFunction);
+ const auto initialPos = positionFunction(actualMenu->sizeHint());
+ actualMenu->d_func()->exec(initialPos, nullptr, positionFunction);
if (!that)
return;