Merge pull request #62179 from Rindbee/fix-popup_center-off-center

Use min_size/max_size to limit window size and position while popup center
This commit is contained in:
Rémi Verschelde 2023-02-07 16:30:41 +01:00
commit 929333fe26
No known key found for this signature in database
GPG key ID: C3336907360768E1
4 changed files with 75 additions and 55 deletions

View file

@ -2561,20 +2561,14 @@ bool Viewport::_sub_windows_forward_input(const Ref<InputEvent> &p_event) {
if (gui.subwindow_drag == SUB_WINDOW_DRAG_RESIZE) {
Vector2i diff = mm->get_position() - gui.subwindow_drag_from;
Size2i min_size = gui.subwindow_focused->get_min_size();
Size2i min_size_clamped = gui.subwindow_focused->get_clamped_minimum_size();
Size2i min_size_adjusted = min_size;
if (gui.subwindow_focused->is_wrapping_controls()) {
Size2i cms = gui.subwindow_focused->get_contents_minimum_size();
min_size_adjusted.x = MAX(cms.x, min_size.x);
min_size_adjusted.y = MAX(cms.y, min_size.y);
}
min_size_adjusted.x = MAX(min_size_adjusted.x, 1);
min_size_adjusted.y = MAX(min_size_adjusted.y, 1);
min_size_clamped.x = MAX(min_size_clamped.x, 1);
min_size_clamped.y = MAX(min_size_clamped.y, 1);
Rect2i r = gui.subwindow_resize_from_rect;
Size2i limit = r.size - min_size_adjusted;
Size2i limit = r.size - min_size_clamped;
switch (gui.subwindow_resize_mode) {
case SUB_WINDOW_RESIZE_TOP_LEFT: {