Jelajahi Sumber

Fix right-click on tilset atlas popup wrong position
Fix similar bug in AnimationLibraryEditor

Gilles Roudière 2 tahun lalu
induk
melakukan
c1de6dc84b

+ 2 - 2
editor/plugins/animation_library_editor.cpp

@@ -554,7 +554,7 @@ void AnimationLibraryEditor::_button_pressed(TreeItem *p_item, int p_column, int
 				file_popup->add_separator();
 				file_popup->add_item(TTR("Open in Inspector"), FILE_MENU_EDIT_LIBRARY);
 				Rect2 pos = tree->get_item_rect(p_item, 1, 0);
-				Vector2 popup_pos = tree->get_screen_position() + pos.position + Vector2(0, pos.size.height);
+				Vector2 popup_pos = tree->get_screen_transform().xform(pos.position + Vector2(0, pos.size.height));
 				file_popup->popup(Rect2(popup_pos, Size2()));
 
 				file_dialog_animation = StringName();
@@ -594,7 +594,7 @@ void AnimationLibraryEditor::_button_pressed(TreeItem *p_item, int p_column, int
 				file_popup->add_separator();
 				file_popup->add_item(TTR("Open in Inspector"), FILE_MENU_EDIT_ANIMATION);
 				Rect2 pos = tree->get_item_rect(p_item, 1, 0);
-				Vector2 popup_pos = tree->get_screen_position() + pos.position + Vector2(0, pos.size.height);
+				Vector2 popup_pos = tree->get_screen_transform().xform(pos.position + Vector2(0, pos.size.height));
 				file_popup->popup(Rect2(popup_pos, Size2()));
 
 				file_dialog_animation = anim_name;

+ 3 - 3
editor/plugins/tiles/tile_set_atlas_source_editor.cpp

@@ -1472,12 +1472,12 @@ void TileSetAtlasSourceEditor::_end_dragging() {
 				// We have a tile.
 				menu_option_coords = selected.tile;
 				menu_option_alternative = 0;
-				base_tile_popup_menu->popup(Rect2i(get_global_mouse_position(), Size2i()));
+				base_tile_popup_menu->popup(Rect2i(get_screen_transform().xform(get_local_mouse_position()), Size2i()));
 			} else if (hovered_base_tile_coords != TileSetSource::INVALID_ATLAS_COORDS) {
 				// We don't have a tile, but can create one.
 				menu_option_coords = hovered_base_tile_coords;
 				menu_option_alternative = TileSetSource::INVALID_TILE_ALTERNATIVE;
-				empty_base_tile_popup_menu->popup(Rect2i(get_global_mouse_position(), Size2i()));
+				empty_base_tile_popup_menu->popup(Rect2i(get_screen_transform().xform(get_local_mouse_position()), Size2i()));
 			}
 		} break;
 		case DRAG_TYPE_RESIZE_TOP_LEFT:
@@ -1973,7 +1973,7 @@ void TileSetAtlasSourceEditor::_tile_alternatives_control_gui_input(const Ref<In
 						selected = selection.front()->get();
 						menu_option_coords = selected.tile;
 						menu_option_alternative = selected.alternative;
-						alternative_tile_popup_menu->popup(Rect2i(get_global_mouse_position(), Size2i()));
+						alternative_tile_popup_menu->popup(Rect2i(get_screen_transform().xform(get_local_mouse_position()), Size2i()));
 					}
 				}