diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp index 37dc124571..749db356b1 100644 --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp @@ -1001,6 +1001,16 @@ void LookAndFeel_V2::drawPopupMenuItem (Graphics& g, const Rectangle& area, } } +void LookAndFeel_V2::drawPopupMenuSectionHeader (Graphics& g, const Rectangle& area, const String& sectionName) +{ + g.setFont (getPopupMenuFont().boldened()); + g.setColour (findColour (PopupMenu::headerTextColourId)); + + g.drawFittedText (sectionName, + area.getX() + 12, area.getY(), area.getWidth() - 16, (int) (area.getHeight() * 0.8f), + Justification::bottomLeft, 1); +} + //============================================================================== int LookAndFeel_V2::getMenuWindowFlags() { diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h index f728df3bed..2342b7cf15 100644 --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h @@ -137,6 +137,9 @@ public: const String& text, const String& shortcutKeyText, const Drawable* icon, const Colour* textColour) override; + void drawPopupMenuSectionHeader (Graphics&, const Rectangle& area, + const String& sectionName) override; + Font getPopupMenuFont() override; void drawPopupMenuUpDownArrow (Graphics&, int width, int height, bool isScrollUpArrow) override; diff --git a/modules/juce_gui_basics/menus/juce_PopupMenu.cpp b/modules/juce_gui_basics/menus/juce_PopupMenu.cpp index 963b530f1f..fdaadb2fc6 100644 --- a/modules/juce_gui_basics/menus/juce_PopupMenu.cpp +++ b/modules/juce_gui_basics/menus/juce_PopupMenu.cpp @@ -1216,12 +1216,7 @@ public: void paint (Graphics& g) override { - g.setFont (getLookAndFeel().getPopupMenuFont().boldened()); - g.setColour (findColour (PopupMenu::headerTextColourId)); - - g.drawFittedText (getName(), - 12, 0, getWidth() - 16, proportionOfHeight (0.8f), - Justification::bottomLeft, 1); + getLookAndFeel().drawPopupMenuSectionHeader (g, getLocalBounds(), getName()); } void getIdealSize (int& idealWidth, int& idealHeight) diff --git a/modules/juce_gui_basics/menus/juce_PopupMenu.h b/modules/juce_gui_basics/menus/juce_PopupMenu.h index 82545a382e..97ac596514 100644 --- a/modules/juce_gui_basics/menus/juce_PopupMenu.h +++ b/modules/juce_gui_basics/menus/juce_PopupMenu.h @@ -562,6 +562,9 @@ public: const Drawable* icon, const Colour* textColour) = 0; + virtual void drawPopupMenuSectionHeader (Graphics&, const Rectangle& area, + const String& sectionName) = 0; + /** Returns the size and style of font to use in popup menus. */ virtual Font getPopupMenuFont() = 0;