diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-02-27 07:18:17 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-27 07:18:17 +1100 |
commit | ccb19f589cac0dae73a70445e39111200fcd78ed (patch) | |
tree | 71da3bf135715eeb0d20bd1e15db0c655effbb29 | |
parent | 5734f14ad83f65763114d6212781705a81544921 (diff) | |
parent | 9c582741e983d94604ebdc6d57753c2fc5091324 (diff) |
Merge pull request #197 from OpenStarbound/pat-scrollareaslop
make scrollareas updating their children optional
-rw-r--r-- | assets/opensb/interface/opensb/shaders/shaders.config | 1 | ||||
-rw-r--r-- | source/windowing/StarScrollArea.cpp | 8 | ||||
-rw-r--r-- | source/windowing/StarScrollArea.hpp | 4 | ||||
-rw-r--r-- | source/windowing/StarWidgetParsing.cpp | 2 |
4 files changed, 14 insertions, 1 deletions
diff --git a/assets/opensb/interface/opensb/shaders/shaders.config b/assets/opensb/interface/opensb/shaders/shaders.config index 3c321aa..03cd6a3 100644 --- a/assets/opensb/interface/opensb/shaders/shaders.config +++ b/assets/opensb/interface/opensb/shaders/shaders.config @@ -115,6 +115,7 @@ }, "options" : { "type" : "scrollArea", + "updatesChildren" : true, "rect" : [147, 16, 398, 185], "children" : {}, "buttons" : { diff --git a/source/windowing/StarScrollArea.cpp b/source/windowing/StarScrollArea.cpp index 775462a..166f4b4 100644 --- a/source/windowing/StarScrollArea.cpp +++ b/source/windowing/StarScrollArea.cpp @@ -385,7 +385,9 @@ bool ScrollArea::sendEvent(InputEvent const& event) { } void ScrollArea::update(float dt) { - Widget::update(dt); + if (m_updatesChildren) + Widget::update(dt); + if (!m_visible) return; @@ -443,4 +445,8 @@ int ScrollArea::advanceFactorHelper() { return (int)std::ceil((m_buttonAdvance * t) / (float)ScrollAdvanceTimer); } +void ScrollArea::setUpdatesChildren(bool slop) { + m_updatesChildren = slop; +} + } diff --git a/source/windowing/StarScrollArea.hpp b/source/windowing/StarScrollArea.hpp index eac1e53..8b4b74f 100644 --- a/source/windowing/StarScrollArea.hpp +++ b/source/windowing/StarScrollArea.hpp @@ -98,6 +98,8 @@ public: bool verticalScroll() const; void setVerticalScroll(bool vertical); + void setUpdatesChildren(bool slop); + virtual bool sendEvent(InputEvent const& event) override; virtual void update(float dt) override; @@ -124,6 +126,8 @@ private: bool m_horizontalScroll; bool m_verticalScroll; + + bool m_updatesChildren; }; typedef shared_ptr<ScrollArea> ScrollAreaPtr; } diff --git a/source/windowing/StarWidgetParsing.cpp b/source/windowing/StarWidgetParsing.cpp index 7a9ea4a..68ec258 100644 --- a/source/windowing/StarWidgetParsing.cpp +++ b/source/windowing/StarWidgetParsing.cpp @@ -779,6 +779,8 @@ WidgetConstructResult WidgetParser::scrollAreaHandler(String const& name, Json c if (config.contains("verticalScroll")) scrollArea->setVerticalScroll(config.getBool("verticalScroll")); + scrollArea->setUpdatesChildren(config.getBool("updatesChildren", false)); + common(scrollArea, config); return WidgetConstructResult(scrollArea, name, config.getFloat("zlevel", 0)); } |