diff --git a/modules/juce_gui_basics/layout/juce_Viewport.cpp b/modules/juce_gui_basics/layout/juce_Viewport.cpp index d534530045..e1b940a49a 100644 --- a/modules/juce_gui_basics/layout/juce_Viewport.cpp +++ b/modules/juce_gui_basics/layout/juce_Viewport.cpp @@ -35,14 +35,10 @@ Viewport::Viewport (const String& name) : Component (name) scrollBarThickness = getLookAndFeel().getDefaultScrollbarWidth(); - addChildComponent (verticalScrollBar = createScrollBarComponent (true)); - addChildComponent (horizontalScrollBar = createScrollBarComponent (false)); - - getVerticalScrollBar().addListener (this); - getHorizontalScrollBar().addListener (this); - setInterceptsMouseClicks (false, true); setWantsKeyboardFocus (true); + + recreateScrollbars(); } Viewport::~Viewport() @@ -97,6 +93,20 @@ void Viewport::setViewedComponent (Component* const newViewedComponent, const bo } } +void Viewport::recreateScrollbars() +{ + verticalScrollBar = nullptr; + horizontalScrollBar = nullptr; + + addChildComponent (verticalScrollBar = createScrollBarComponent (true)); + addChildComponent (horizontalScrollBar = createScrollBarComponent (false)); + + getVerticalScrollBar().addListener (this); + getHorizontalScrollBar().addListener (this); + + resized(); +} + int Viewport::getMaximumVisibleWidth() const { return contentHolder.getWidth(); } int Viewport::getMaximumVisibleHeight() const { return contentHolder.getHeight(); } diff --git a/modules/juce_gui_basics/layout/juce_Viewport.h b/modules/juce_gui_basics/layout/juce_Viewport.h index b742186f0f..248e47396b 100644 --- a/modules/juce_gui_basics/layout/juce_Viewport.h +++ b/modules/juce_gui_basics/layout/juce_Viewport.h @@ -238,6 +238,9 @@ public: */ ScrollBar& getHorizontalScrollBar() noexcept { return *horizontalScrollBar; } + /** Re-instantiates the scrollbars, which is only really useful if you've overridden createScrollBarComponent(). */ + void recreateScrollbars(); + /** True if there's any off-screen content that could be scrolled vertically, or false if everything is currently visible. */