diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-11-26 10:51:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-26 10:51:20 +0100 |
commit | a698fd1b46c748efcc116af3d48d0f5980822c66 (patch) | |
tree | a0477e9629974b108f3a663f00e526c81ad6e4a7 /scene/gui | |
parent | 55f86e9b7b25e44e5fe7acd9e55d1e26c5a67e95 (diff) | |
parent | bfd5e098794ecb1f563b53e29f6981fda86381e9 (diff) |
Merge pull request #33908 from akien-mga/range-fix-max-errors
Range: Fix cases where max was set to or below min value
Diffstat (limited to 'scene/gui')
-rw-r--r-- | scene/gui/item_list.cpp | 6 | ||||
-rw-r--r-- | scene/gui/range.cpp | 2 | ||||
-rw-r--r-- | scene/gui/scroll_container.cpp | 2 | ||||
-rw-r--r-- | scene/gui/text_edit.cpp | 2 |
4 files changed, 5 insertions, 7 deletions
diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp index 1406586361..3884622942 100644 --- a/scene/gui/item_list.cpp +++ b/scene/gui/item_list.cpp @@ -969,16 +969,16 @@ void ItemList::_notification(int p_what) { } if (all_fit) { - float page = size.height - bg->get_minimum_size().height; + float page = MAX(0, size.height - bg->get_minimum_size().height); float max = MAX(page, ofs.y + max_h); if (auto_height) auto_height_value = ofs.y + max_h + bg->get_minimum_size().height; - scroll_bar->set_max(max); - scroll_bar->set_page(page); if (max <= page) { scroll_bar->set_value(0); scroll_bar->hide(); } else { + scroll_bar->set_max(max); + scroll_bar->set_page(page); scroll_bar->show(); if (do_autoscroll_to_bottom) diff --git a/scene/gui/range.cpp b/scene/gui/range.cpp index 362697b4ad..97775f2946 100644 --- a/scene/gui/range.cpp +++ b/scene/gui/range.cpp @@ -100,6 +100,7 @@ void Range::set_value(double p_val) { shared->emit_value_changed(); } void Range::set_min(double p_min) { + ERR_FAIL_COND_MSG(p_min >= shared->max, "Range cannot have min value higher or equal to its max value."); shared->min = p_min; set_value(shared->val); @@ -109,6 +110,7 @@ void Range::set_min(double p_min) { update_configuration_warning(); } void Range::set_max(double p_max) { + ERR_FAIL_COND_MSG(p_max <= shared->min, "Range cannot have max value lower or equal to its min value."); shared->max = p_max; set_value(shared->val); diff --git a/scene/gui/scroll_container.cpp b/scene/gui/scroll_container.cpp index a840e3fec1..fa23bf91dd 100644 --- a/scene/gui/scroll_container.cpp +++ b/scene/gui/scroll_container.cpp @@ -388,7 +388,6 @@ void ScrollContainer::update_scrollbars() { if (hide_scroll_v) { v_scroll->hide(); - v_scroll->set_max(0); scroll.y = 0; } else { @@ -406,7 +405,6 @@ void ScrollContainer::update_scrollbars() { if (hide_scroll_h) { h_scroll->hide(); - h_scroll->set_max(0); scroll.x = 0; } else { diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index b997d7a064..2558a930b6 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -417,7 +417,6 @@ void TextEdit::_update_scrollbars() { cursor.line_ofs = 0; cursor.wrap_ofs = 0; v_scroll->set_value(0); - v_scroll->set_max(0); v_scroll->hide(); } @@ -436,7 +435,6 @@ void TextEdit::_update_scrollbars() { cursor.x_ofs = 0; h_scroll->set_value(0); - h_scroll->set_max(0); h_scroll->hide(); } |