diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-04-18 12:24:11 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-04-18 12:24:11 +0200 |
commit | 3a88373a4c3e024aa96f94d08dd5f979e9af0f1c (patch) | |
tree | 6b8f88f06de05e02bec11e84d06b2593c180faa1 /scene/gui/tree.cpp | |
parent | 3b1806182a3564736ad64793b203c2c13c251f56 (diff) | |
parent | 0881c81c136e3b133a480bedd14a7517bd8a373b (diff) | |
download | redot-engine-3a88373a4c3e024aa96f94d08dd5f979e9af0f1c.tar.gz |
Merge pull request #86553 from Koyper/fix_popup_panel_content_scaling
Fix non-embedded tooltips, popups and dialogs resizing to match Viewport content scale factors != 1.0
Diffstat (limited to 'scene/gui/tree.cpp')
-rw-r--r-- | scene/gui/tree.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index 1daf86fe0f..1242d3bd16 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -3995,12 +3995,14 @@ bool Tree::edit_selected(bool p_force_edit) { return false; } + float popup_scale = popup_editor->is_embedded() ? 1.0 : popup_editor->get_parent_visible_window()->get_content_scale_factor(); Rect2 rect; if (select_mode == SELECT_ROW) { rect = s->get_meta("__focus_col_" + itos(selected_col)); } else { rect = s->get_meta("__focus_rect"); } + rect.position *= popup_scale; popup_edited_item = s; popup_edited_item_col = col; @@ -4043,7 +4045,7 @@ bool Tree::edit_selected(bool p_force_edit) { popup_rect.size = rect.size; // Account for icon. - Size2 icon_size = _get_cell_icon_size(c); + Size2 icon_size = _get_cell_icon_size(c) * popup_scale; popup_rect.position.x += icon_size.x; popup_rect.size.x -= icon_size.x; @@ -4070,7 +4072,10 @@ bool Tree::edit_selected(bool p_force_edit) { } popup_editor->set_position(popup_rect.position); - popup_editor->set_size(popup_rect.size); + popup_editor->set_size(popup_rect.size * popup_scale); + if (!popup_editor->is_embedded()) { + popup_editor->set_content_scale_factor(popup_scale); + } popup_editor->popup(); popup_editor->child_controls_changed(); @@ -4086,7 +4091,10 @@ bool Tree::edit_selected(bool p_force_edit) { text_editor->show(); popup_editor->set_position(get_screen_position() + rect.position); - popup_editor->set_size(rect.size); + popup_editor->set_size(rect.size * popup_scale); + if (!popup_editor->is_embedded()) { + popup_editor->set_content_scale_factor(popup_scale); + } popup_editor->popup(); popup_editor->child_controls_changed(); |