From 151e3f769e14e490c1eca407736f8ea45a99dcc6 Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 4 Sep 2016 12:37:53 +0100 Subject: [PATCH] Added a LookAndFeel method preparePopupMenuWindow() to allow the window component to be customised before being displayed --- modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp | 2 ++ modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h | 1 + modules/juce_gui_basics/menus/juce_PopupMenu.cpp | 1 + modules/juce_gui_basics/menus/juce_PopupMenu.h | 2 ++ 4 files changed, 6 insertions(+) diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp index ba5533eb52..c151eec9d3 100644 --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp @@ -1080,6 +1080,8 @@ Component* LookAndFeel_V2::getParentComponentForMenuOptions (const PopupMenu::Op return options.getParentComponent(); } +void LookAndFeel_V2::preparePopupMenuWindow (Component&) {} + //============================================================================== void LookAndFeel_V2::fillTextEditorBackground (Graphics& g, int /*width*/, int /*height*/, TextEditor& textEditor) { diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h index 1633bfd036..2468edeb1d 100644 --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h @@ -162,6 +162,7 @@ public: void getIdealPopupMenuItemSize (const String& text, bool isSeparator, int standardMenuItemHeight, int& idealWidth, int& idealHeight) override; int getMenuWindowFlags() override; + void preparePopupMenuWindow (Component&) override; void drawMenuBarBackground (Graphics&, int width, int height, bool isMouseOverBar, MenuBarComponent&) override; int getMenuBarItemWidth (MenuBarComponent&, int itemIndex, const String& itemText) override; diff --git a/modules/juce_gui_basics/menus/juce_PopupMenu.cpp b/modules/juce_gui_basics/menus/juce_PopupMenu.cpp index ed08a09f54..2ea986c4be 100644 --- a/modules/juce_gui_basics/menus/juce_PopupMenu.cpp +++ b/modules/juce_gui_basics/menus/juce_PopupMenu.cpp @@ -903,6 +903,7 @@ 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); diff --git a/modules/juce_gui_basics/menus/juce_PopupMenu.h b/modules/juce_gui_basics/menus/juce_PopupMenu.h index 04a1ec0292..c2122d6fd4 100644 --- a/modules/juce_gui_basics/menus/juce_PopupMenu.h +++ b/modules/juce_gui_basics/menus/juce_PopupMenu.h @@ -707,6 +707,8 @@ public: MenuBarComponent&) = 0; virtual Component* getParentComponentForMenuOptions (const PopupMenu::Options& options) = 0; + + virtual void preparePopupMenuWindow (Component& newWindow) = 0; }; private: