diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp index d9a56af513..e09466fa43 100644 --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp @@ -1199,6 +1199,15 @@ void LookAndFeel_V2::positionComboBoxText (ComboBox& box, Label& label) label.setFont (getComboBoxFont (box)); } +PopupMenu::Options LookAndFeel_V2::getOptionsForComboBoxPopupMenu (ComboBox& box, Label& label) +{ + return PopupMenu::Options().withTargetComponent (&box) + .withItemThatMustBeVisible (box.getSelectedId()) + .withMinimumWidth (box.getWidth()) + .withMaximumNumColumns (1) + .withStandardItemHeight (label.getHeight()); +} + //============================================================================== Font LookAndFeel_V2::getLabelFont (Label& label) { diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h index 7bc3c25a5a..56028e962b 100644 --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h @@ -193,6 +193,7 @@ public: Font getComboBoxFont (ComboBox&) override; Label* createComboBoxTextBox (ComboBox&) override; void positionComboBoxText (ComboBox&, Label&) override; + PopupMenu::Options getOptionsForComboBoxPopupMenu (ComboBox&, Label&) override; //============================================================================== void drawLabel (Graphics&, Label&) override; diff --git a/modules/juce_gui_basics/widgets/juce_ComboBox.cpp b/modules/juce_gui_basics/widgets/juce_ComboBox.cpp index e6f16f3c54..c4f4960c8f 100644 --- a/modules/juce_gui_basics/widgets/juce_ComboBox.cpp +++ b/modules/juce_gui_basics/widgets/juce_ComboBox.cpp @@ -545,12 +545,10 @@ void ComboBox::showPopup() menu.addItem (1, noChoicesMessage, false, false); } - menu.setLookAndFeel (&getLookAndFeel()); - menu.showMenuAsync (PopupMenu::Options().withTargetComponent (this) - .withItemThatMustBeVisible (getSelectedId()) - .withMinimumWidth (getWidth()) - .withMaximumNumColumns (1) - .withStandardItemHeight (label->getHeight()), + auto& lookAndFeel = getLookAndFeel(); + + menu.setLookAndFeel (&lookAndFeel); + menu.showMenuAsync (lookAndFeel.getOptionsForComboBoxPopupMenu (*this, *label), ModalCallbackFunction::forComponent (comboBoxPopupMenuFinishedCallback, this)); } diff --git a/modules/juce_gui_basics/widgets/juce_ComboBox.h b/modules/juce_gui_basics/widgets/juce_ComboBox.h index 68cd9c0914..60107995b0 100644 --- a/modules/juce_gui_basics/widgets/juce_ComboBox.h +++ b/modules/juce_gui_basics/widgets/juce_ComboBox.h @@ -376,6 +376,8 @@ public: virtual Label* createComboBoxTextBox (ComboBox&) = 0; virtual void positionComboBoxText (ComboBox&, Label& labelToPosition) = 0; + + virtual PopupMenu::Options getOptionsForComboBoxPopupMenu (ComboBox&, Label&) = 0; }; //==============================================================================