Skip to content

Commit

Permalink
Range: Fix cases where max was set to or below min value
Browse files Browse the repository at this point in the history
It will now raise an error whenever this happens so that we can fix
these situations. `max == min` is not allowed as it could lead to
divisions by zero in ratios, and `max < min` doesn't make much sense.

Fixes #33907.
  • Loading branch information
akien-mga committed Nov 26, 2019
1 parent 55f86e9 commit bfd5e09
Show file tree
Hide file tree
Showing 5 changed files with 7 additions and 9 deletions.
4 changes: 2 additions & 2 deletions editor/plugins/animation_blend_space_1d_editor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -702,13 +702,13 @@ AnimationNodeBlendSpace1DEditor::AnimationNodeBlendSpace1DEditor() {
bottom_hb->set_h_size_flags(SIZE_EXPAND_FILL);

min_value = memnew(SpinBox);
min_value->set_max(0);
min_value->set_min(-10000);
min_value->set_max(0);
min_value->set_step(0.01);

max_value = memnew(SpinBox);
max_value->set_max(10000);
max_value->set_min(0.01);
max_value->set_max(10000);
max_value->set_step(0.01);

label_value = memnew(LineEdit);
Expand Down
6 changes: 3 additions & 3 deletions scene/gui/item_list.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 2 additions & 0 deletions scene/gui/range.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
Expand Down
2 changes: 0 additions & 2 deletions scene/gui/scroll_container.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,6 @@ void ScrollContainer::update_scrollbars() {
if (hide_scroll_v) {

v_scroll->hide();
v_scroll->set_max(0);
scroll.y = 0;
} else {

Expand All @@ -406,7 +405,6 @@ void ScrollContainer::update_scrollbars() {
if (hide_scroll_h) {

h_scroll->hide();
h_scroll->set_max(0);
scroll.x = 0;
} else {

Expand Down
2 changes: 0 additions & 2 deletions scene/gui/text_edit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}

Expand All @@ -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();
}

Expand Down

0 comments on commit bfd5e09

Please sign in to comment.