summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-01-08 11:55:30 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-01-08 11:55:30 +0100
commitdd487ebb0b34fa295c8f9290c2ccd252028b6b2d (patch)
tree7861ae0ca97020e0564941065986c706f222c789
parent665c3edee227cef79f95038c4d39548bbd295275 (diff)
parent42c672afd65020e86c522b5bbfc8ed4c43b3984b (diff)
downloadredot-engine-dd487ebb0b34fa295c8f9290c2ccd252028b6b2d.tar.gz
Merge pull request #86568 from jsjtxietian/fix-infinite-loop-tile
Fix potential infinite loop when calculating tile editor zoom level
-rw-r--r--editor/plugins/tiles/tile_data_editors.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/editor/plugins/tiles/tile_data_editors.cpp b/editor/plugins/tiles/tile_data_editors.cpp
index dcf9a5e8fa..c8247e0551 100644
--- a/editor/plugins/tiles/tile_data_editors.cpp
+++ b/editor/plugins/tiles/tile_data_editors.cpp
@@ -719,11 +719,19 @@ void GenericTilePolygonEditor::set_tile_set(Ref<TileSet> p_tile_set) {
Vector2 zoomed_tile = editor_zoom_widget->get_zoom() * tile_set->get_tile_size();
while (zoomed_tile.y < default_control_y_size) {
editor_zoom_widget->set_zoom_by_increments(6, false);
- zoomed_tile = editor_zoom_widget->get_zoom() * tile_set->get_tile_size();
+ float current_zoom = editor_zoom_widget->get_zoom();
+ zoomed_tile = current_zoom * tile_set->get_tile_size();
+ if (Math::is_equal_approx(current_zoom, editor_zoom_widget->get_max_zoom())) {
+ break;
+ }
}
while (zoomed_tile.y > default_control_y_size) {
editor_zoom_widget->set_zoom_by_increments(-6, false);
- zoomed_tile = editor_zoom_widget->get_zoom() * tile_set->get_tile_size();
+ float current_zoom = editor_zoom_widget->get_zoom();
+ zoomed_tile = current_zoom * tile_set->get_tile_size();
+ if (Math::is_equal_approx(current_zoom, editor_zoom_widget->get_min_zoom())) {
+ break;
+ }
}
editor_zoom_widget->set_zoom_by_increments(-6, false);
_zoom_changed();