From a5ece9368ffc0c2bae15731979e2a0e7b5e816bc Mon Sep 17 00:00:00 2001 From: kobewi Date: Wed, 24 Sep 2025 22:02:56 +0200 Subject: [PATCH] Reduce repetitive code in FoldableContainer --- scene/gui/foldable_container.cpp | 14 +++++++------- scene/gui/foldable_container.h | 1 + 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/scene/gui/foldable_container.cpp b/scene/gui/foldable_container.cpp index e157b6d9e15..20c0a5db937 100644 --- a/scene/gui/foldable_container.cpp +++ b/scene/gui/foldable_container.cpp @@ -219,8 +219,7 @@ void FoldableContainer::gui_input(const Ref &p_event) { Ref m = p_event; if (m.is_valid()) { - Rect2 title_rect = Rect2(0, (title_position == POSITION_TOP) ? 0 : get_size().height - title_minimum_size.height, get_size().width, title_minimum_size.height); - if (title_rect.has_point(m->get_position())) { + if (_get_title_rect().has_point(m->get_position())) { if (!is_hovering) { is_hovering = true; queue_redraw(); @@ -241,8 +240,7 @@ void FoldableContainer::gui_input(const Ref &p_event) { Ref b = p_event; if (b.is_valid()) { - Rect2 title_rect = Rect2(0, (title_position == POSITION_TOP) ? 0 : get_size().height - title_minimum_size.height, get_size().width, title_minimum_size.height); - if (b->get_button_index() == MouseButton::LEFT && b->is_pressed() && title_rect.has_point(b->get_position())) { + if (b->get_button_index() == MouseButton::LEFT && b->is_pressed() && _get_title_rect().has_point(b->get_position())) { set_folded(!folded); emit_signal(SNAME("folding_changed"), folded); accept_event(); @@ -272,9 +270,7 @@ void FoldableContainer::_notification(int p_what) { title_controls_width += h_separation; } - Rect2 title_rect( - Point2(0, (title_position == POSITION_TOP) ? 0 : size.height - title_minimum_size.height), - Size2(size.width, title_minimum_size.height)); + const Rect2 title_rect = _get_title_rect(); _draw_flippable_stylebox(title_style, title_rect); Size2 title_ms = title_style->get_minimum_size(); @@ -431,6 +427,10 @@ Ref FoldableContainer::_get_title_icon() const { return theme_cache.folded_arrow; } +Rect2 FoldableContainer::_get_title_rect() const { + return Rect2(0, (title_position == POSITION_TOP) ? 0 : (get_size().height - title_minimum_size.height), get_size().width, title_minimum_size.height); +} + void FoldableContainer::_update_title_min_size() const { Ref title_style = folded ? theme_cache.title_collapsed_style : theme_cache.title_style; Ref icon = _get_title_icon(); diff --git a/scene/gui/foldable_container.h b/scene/gui/foldable_container.h index 89c4e1f22e5..7b93a5094fa 100644 --- a/scene/gui/foldable_container.h +++ b/scene/gui/foldable_container.h @@ -89,6 +89,7 @@ private: Ref _get_title_style() const; Ref _get_title_icon() const; + Rect2 _get_title_rect() const; int _get_h_separation() const { return MAX(theme_cache.h_separation, 0); } real_t _get_title_controls_width() const;