From 634a56a3557f85e6b377f5587e9d4be14fca1668 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 1 Jun 2025 23:10:56 +0300 Subject: [PATCH] update splitbox refresh method --- src/graphics/ui/elements/SplitBox.cpp | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/graphics/ui/elements/SplitBox.cpp b/src/graphics/ui/elements/SplitBox.cpp index 8cbc94bf..c1fbcbcc 100644 --- a/src/graphics/ui/elements/SplitBox.cpp +++ b/src/graphics/ui/elements/SplitBox.cpp @@ -1,5 +1,7 @@ #include "SplitBox.hpp" +#include "util/stack_vector.hpp" + using namespace gui; SplitBox::SplitBox(GUI& gui, const glm::vec2& size, float splitPos, Orientation orientation) @@ -28,18 +30,31 @@ void SplitBox::mouseMove(int x, int y) { void SplitBox::refresh() { Container::refresh(); - if (nodes.empty()) { + util::stack_vector visibleNodes; + + for (const auto& node : nodes) { + if (!node->isVisible()) { + continue; + } + visibleNodes.push_back(node.get()); + if (visibleNodes.full()) { + break; + } + } + + if (visibleNodes.empty()) { return; } + glm::vec2 size = getSize(); - if (nodes.size() == 1) { - auto node = nodes.at(0); + if (visibleNodes.size() == 1) { + auto node = visibleNodes.at(0); node->setPos(glm::vec2()); node->setSize(size); return; } - auto nodeA = nodes.at(0); - auto nodeB = nodes.at(1); + auto nodeA = visibleNodes.at(0); + auto nodeB = visibleNodes.at(1); float sepRadius = interval / 2.0f;