From e8af67182da5965861956bad3caa691a4fe507f1 Mon Sep 17 00:00:00 2001 From: jules Date: Fri, 6 Oct 2017 11:54:55 +0100 Subject: [PATCH] Added method Viewport::recreateScrollbars() --- .../juce_gui_basics/layout/juce_Viewport.cpp | 22 ++++++++++++++----- .../juce_gui_basics/layout/juce_Viewport.h | 3 +++ 2 files changed, 19 insertions(+), 6 deletions(-) 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. */