diff --git a/modules/juce_gui_basics/menus/juce_PopupMenu.cpp b/modules/juce_gui_basics/menus/juce_PopupMenu.cpp index 2ea986c4be..248cfd47b4 100644 --- a/modules/juce_gui_basics/menus/juce_PopupMenu.cpp +++ b/modules/juce_gui_basics/menus/juce_PopupMenu.cpp @@ -221,9 +221,11 @@ public: setLookAndFeel (parent != nullptr ? &(parent->getLookAndFeel()) : menu.lookAndFeel.get()); - parentComponent = getLookAndFeel().getParentComponentForMenuOptions (options); + LookAndFeel& lf = getLookAndFeel(); - setOpaque (getLookAndFeel().findColour (PopupMenu::backgroundColourId).isOpaque() + parentComponent = lf.getParentComponentForMenuOptions (options); + + setOpaque (lf.findColour (PopupMenu::backgroundColourId).isOpaque() || ! Desktop::canUseSemiTransparentWindows()); for (int i = 0; i < menu.items.size(); ++i) @@ -259,11 +261,13 @@ public: { addToDesktop (ComponentPeer::windowIsTemporary | ComponentPeer::windowIgnoresKeyPresses - | getLookAndFeel().getMenuWindowFlags()); + | lf.getMenuWindowFlags()); getActiveWindows().add (this); Desktop::getInstance().addGlobalMouseListener (this); } + + lf.preparePopupMenuWindow (*this); } ~MenuWindow() @@ -903,7 +907,6 @@ public: .withTargetComponent (nullptr), false, dismissOnMouseUp, managerOfChosenCommand); - getLookAndFeel().preparePopupMenuWindow (*activeSubMenu); activeSubMenu->setVisible (true); // (must be called before enterModalState on Windows to avoid DropShadower confusion) activeSubMenu->enterModalState (false); activeSubMenu->toFront (false);