summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Redondo <qt@david-redondo.de>2020-11-03 11:04:56 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2020-11-20 17:49:45 +0000
commitc5336057301d6a62160bc672dd0ab081b3c26725 (patch)
treeaa36f6ad5569fc9f4ae73455631c71b00a88d69b
parent1afaeddfd4694f91d5e5201cddec16259e83c620 (diff)
Ensure that QMenu is polished before setting the screen in popup()
Some styles alter the widget that will influence the underlying platform window. An example is when a style would want to draw the menu with some transparency and sets the Qt::WA_TranslucentBackground attribute. This needs to happen before the platform window is created. However calling QWidgetPrivate::setScreen will end up creating the window and the surface format will be fixed at this point. Change-Id: I707cf1de5c1614382cffbea1aae8cdb01f7de44a Reviewed-by: Nate Graham Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> (cherry picked from commit 36b1d37cef09769eea22f78d77440ac4c5d008d8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/widgets/widgets/qmenu.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp
index ab933c987f..a23d8b790d 100644
--- a/src/widgets/widgets/qmenu.cpp
+++ b/src/widgets/widgets/qmenu.cpp
@@ -2368,6 +2368,8 @@ void QMenuPrivate::popup(const QPoint &p, QAction *atAction, PositionFunction po
doChildEffects = true;
updateLayoutDirection();
+ q->ensurePolished(); // Get the right font
+
// Ensure that we get correct sizeHints by placing this window on the correct screen.
// However if the QMenu was constructed with a QDesktopScreenWidget as its parent,
// then initialScreenIndex was set, so we should respect that for the lifetime of this menu.
@@ -2405,7 +2407,6 @@ void QMenuPrivate::popup(const QPoint &p, QAction *atAction, PositionFunction po
q->setAttribute(Qt::WA_X11NetWmWindowTypeDropDownMenu, qobject_cast<QMenuBar *>(topCausedWidget()) != nullptr);
#endif
- q->ensurePolished(); // Get the right font
emit q->aboutToShow();
const bool actionListChanged = itemsDirty;