diff --git a/modules/juce_graphics/fonts/juce_Font.h b/modules/juce_graphics/fonts/juce_Font.h index 3da239d731..429e35e435 100644 --- a/modules/juce_graphics/fonts/juce_Font.h +++ b/modules/juce_graphics/fonts/juce_Font.h @@ -279,8 +279,12 @@ public: //============================================================================== /** Makes the font bold or non-bold. */ void setBold (bool shouldBeBold); - /** Returns a copy of this font with the bold attribute set. */ + + /** Returns a copy of this font with the bold attribute set. + If the font does not have a bold version, this will return the default font. + */ Font boldened() const; + /** Returns true if the font is bold. */ bool isBold() const noexcept; diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp index 2d894e567b..973955d767 100644 --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp @@ -490,6 +490,12 @@ int LookAndFeel_V2::getAlertWindowButtonHeight() return 28; } +Font LookAndFeel_V2::getAlertWindowTitleFont() +{ + Font messageFont = getAlertWindowMessageFont(); + return messageFont.withHeight (messageFont.getHeight() * 1.1f).boldened(); +} + Font LookAndFeel_V2::getAlertWindowMessageFont() { return Font (15.0f); diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h index 40ccad202b..163176941f 100644 --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h @@ -67,7 +67,22 @@ public: void drawAlertBox (Graphics&, AlertWindow&, const Rectangle& textArea, TextLayout&) override; int getAlertBoxWindowFlags() override; int getAlertWindowButtonHeight() override; + + /** Override this function to supply a custom font for the alert window title. + This default implementation will use a boldened and slightly larger version + of the alert window message font. + + @see getAlertWindowMessageFont. + */ + Font getAlertWindowTitleFont() override; + + /** Override this function to supply a custom font for the alert window message. + This default implementation will use the default font with height set to 15.0f. + + @see getAlertWindowTitleFont + */ Font getAlertWindowMessageFont() override; + Font getAlertWindowFont() override; //============================================================================== diff --git a/modules/juce_gui_basics/windows/juce_AlertWindow.cpp b/modules/juce_gui_basics/windows/juce_AlertWindow.cpp index 1ce0ae6482..c3aebbddbe 100644 --- a/modules/juce_gui_basics/windows/juce_AlertWindow.cpp +++ b/modules/juce_gui_basics/windows/juce_AlertWindow.cpp @@ -343,22 +343,24 @@ void AlertWindow::updateLayout (const bool onlyIncreaseSize) const int titleH = 24; const int iconWidth = 80; - const Font font (getLookAndFeel().getAlertWindowMessageFont()); + LookAndFeel& lookAndFeel = getLookAndFeel(); - const int wid = jmax (font.getStringWidth (text), - font.getStringWidth (getName())); + const Font messageFont (lookAndFeel.getAlertWindowMessageFont()); - const int sw = (int) std::sqrt (font.getHeight() * wid); + const int wid = jmax (messageFont.getStringWidth (text), + messageFont.getStringWidth (getName())); + + const int sw = (int) std::sqrt (messageFont.getHeight() * wid); int w = jmin (300 + sw * 2, (int) (getParentWidth() * 0.7f)); const int edgeGap = 10; const int labelHeight = 18; int iconSpace = 0; AttributedString attributedText; - attributedText.append (getName(), font.withHeight (font.getHeight() * 1.1f).boldened()); + attributedText.append (getName(), lookAndFeel.getAlertWindowTitleFont()); if (text.isNotEmpty()) - attributedText.append ("\n\n" + text, font); + attributedText.append ("\n\n" + text, messageFont); attributedText.setColour (findColour (textColourId)); @@ -383,18 +385,18 @@ void AlertWindow::updateLayout (const bool onlyIncreaseSize) int buttonW = 40; for (int i = 0; i < buttons.size(); ++i) - buttonW += 16 + buttons.getUnchecked(i)->getWidth(); + buttonW += 16 + buttons.getUnchecked (i)->getWidth(); w = jmax (buttonW, w); h += (textBoxes.size() + comboBoxes.size() + progressBars.size()) * 50; if (buttons.size() > 0) - h += 20 + buttons.getUnchecked(0)->getHeight(); + h += 20 + buttons.getUnchecked (0)->getHeight(); for (int i = customComps.size(); --i >= 0;) { - Component* c = customComps.getUnchecked(i); + Component* c = customComps.getUnchecked (i); w = jmax (w, (c->getWidth() * 100) / 80); h += 10 + c->getHeight(); diff --git a/modules/juce_gui_basics/windows/juce_AlertWindow.h b/modules/juce_gui_basics/windows/juce_AlertWindow.h index 733da87394..26aae69c5f 100644 --- a/modules/juce_gui_basics/windows/juce_AlertWindow.h +++ b/modules/juce_gui_basics/windows/juce_AlertWindow.h @@ -437,6 +437,7 @@ public: virtual int getAlertWindowButtonHeight() = 0; + virtual Font getAlertWindowTitleFont() = 0; virtual Font getAlertWindowMessageFont() = 0; virtual Font getAlertWindowFont() = 0; };