From fcecf67ab3ec27d8a06873fae30fd324be478f52 Mon Sep 17 00:00:00 2001 From: ed Date: Fri, 27 Jul 2018 09:18:19 +0100 Subject: [PATCH] Added a drawComboBoxTextWhenNothingSelected() method to ComboBox::LookAndFeelMethods and made the drawing code consistent with drawLabel() --- .../lookandfeel/juce_LookAndFeel_V2.cpp | 15 +++++++++++++++ .../lookandfeel/juce_LookAndFeel_V2.h | 1 + modules/juce_gui_basics/widgets/juce_ComboBox.cpp | 12 ++---------- modules/juce_gui_basics/widgets/juce_ComboBox.h | 2 ++ 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp index b88f40f4e3..bdeea1dcc8 100644 --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp @@ -1210,6 +1210,21 @@ PopupMenu::Options LookAndFeel_V2::getOptionsForComboBoxPopupMenu (ComboBox& box .withStandardItemHeight (label.getHeight()); } +void LookAndFeel_V2::drawComboBoxTextWhenNothingSelected (Graphics& g, ComboBox& box, Label& label) +{ + g.setColour (findColour (ComboBox::textColourId).withMultipliedAlpha (0.5f)); + + auto font = label.getLookAndFeel().getLabelFont (label); + + g.setFont (font); + + auto textArea = label.getBorderSize().subtractedFrom (label.getLocalBounds()); + + g.drawFittedText (box.getTextWhenNothingSelected(), textArea, label.getJustificationType(), + jmax (1, (int) (textArea.getHeight() / font.getHeight())), + label.getMinimumHorizontalScale()); +} + //============================================================================== 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 8b1a4a2503..c0b61a5fa4 100644 --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h @@ -198,6 +198,7 @@ public: Label* createComboBoxTextBox (ComboBox&) override; void positionComboBoxText (ComboBox&, Label&) override; PopupMenu::Options getOptionsForComboBoxPopupMenu (ComboBox&, Label&) override; + void drawComboBoxTextWhenNothingSelected (Graphics&, 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 bfc6f165c1..cf59fa8574 100644 --- a/modules/juce_gui_basics/widgets/juce_ComboBox.cpp +++ b/modules/juce_gui_basics/widgets/juce_ComboBox.cpp @@ -369,16 +369,8 @@ void ComboBox::paint (Graphics& g) label->getRight(), 0, getWidth() - label->getRight(), getHeight(), *this); - if (textWhenNothingSelected.isNotEmpty() - && label->getText().isEmpty() - && ! label->isBeingEdited()) - { - g.setColour (findColour (textColourId).withMultipliedAlpha (0.5f)); - g.setFont (label->getLookAndFeel().getLabelFont (*label)); - g.drawFittedText (textWhenNothingSelected, label->getBounds().reduced (2, 1), - label->getJustificationType(), - jmax (1, (int) (label->getHeight() / label->getFont().getHeight()))); - } + if (textWhenNothingSelected.isNotEmpty() && label->getText().isEmpty() && ! label->isBeingEdited()) + getLookAndFeel().drawComboBoxTextWhenNothingSelected (g, *this, *label); } void ComboBox::resized() diff --git a/modules/juce_gui_basics/widgets/juce_ComboBox.h b/modules/juce_gui_basics/widgets/juce_ComboBox.h index 91eef85a01..f6d51d88d7 100644 --- a/modules/juce_gui_basics/widgets/juce_ComboBox.h +++ b/modules/juce_gui_basics/widgets/juce_ComboBox.h @@ -378,6 +378,8 @@ public: virtual void positionComboBoxText (ComboBox&, Label& labelToPosition) = 0; virtual PopupMenu::Options getOptionsForComboBoxPopupMenu (ComboBox&, Label&) = 0; + + virtual void drawComboBoxTextWhenNothingSelected (Graphics&, ComboBox&, Label&) = 0; }; //==============================================================================