Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2025-02-27 07:18:17 +1100
committerGitHub <noreply@github.com>2025-02-27 07:18:17 +1100
commitccb19f589cac0dae73a70445e39111200fcd78ed (patch)
tree71da3bf135715eeb0d20bd1e15db0c655effbb29
parent5734f14ad83f65763114d6212781705a81544921 (diff)
parent9c582741e983d94604ebdc6d57753c2fc5091324 (diff)
Merge pull request #197 from OpenStarbound/pat-scrollareaslop
make scrollareas updating their children optional
-rw-r--r--assets/opensb/interface/opensb/shaders/shaders.config1
-rw-r--r--source/windowing/StarScrollArea.cpp8
-rw-r--r--source/windowing/StarScrollArea.hpp4
-rw-r--r--source/windowing/StarWidgetParsing.cpp2
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));
}