summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets/qmenu.cpp
diff options
context:
space:
mode:
authorDavid Redondo <qt@david-redondo.de>2020-11-03 11:04:56 +0100
committerDavid Redondo <qt@david-redondo.de>2020-11-18 12:03:27 +0100
commit36b1d37cef09769eea22f78d77440ac4c5d008d8 (patch)
tree73470fc84053aee1aef57bed4ac185fe197a42a4 /src/widgets/widgets/qmenu.cpp
parent4e7013033ffa52b04097c587d4108009824720bf (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. Pick-to: 5.15 Change-Id: I707cf1de5c1614382cffbea1aae8cdb01f7de44a Reviewed-by: Nate Graham Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src/widgets/widgets/qmenu.cpp')
-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 4a6c51383d..85dbe9b6e0 100644
--- a/src/widgets/widgets/qmenu.cpp
+++ b/src/widgets/widgets/qmenu.cpp
@@ -2373,6 +2373,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 Qt::Desktop widget as its parent,
// then initialScreenIndex was set, so we should respect that for the lifetime of this menu.
@@ -2407,7 +2409,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;