1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-21 14:57:09 +00:00

Fix alternative tile popup menu not being openable

This commit is contained in:
MinusKube
2022-08-19 04:55:25 +02:00
parent cfcdd576dd
commit 2abccb018e

View File

@@ -1888,7 +1888,7 @@ void TileSetAtlasSourceEditor::_tile_alternatives_control_gui_input(const Ref<In
alternative_tiles_control_unscaled->update(); alternative_tiles_control_unscaled->update();
if (drag_type == DRAG_TYPE_MAY_POPUP_MENU) { if (drag_type == DRAG_TYPE_MAY_POPUP_MENU) {
if (Vector2(drag_start_mouse_pos).distance_to(tile_atlas_control->get_local_mouse_position()) > 5.0 * EDSCALE) { if (Vector2(drag_start_mouse_pos).distance_to(alternative_tiles_control->get_local_mouse_position()) > 5.0 * EDSCALE) {
drag_type = DRAG_TYPE_NONE; drag_type = DRAG_TYPE_NONE;
} }
} }
@@ -1896,8 +1896,6 @@ void TileSetAtlasSourceEditor::_tile_alternatives_control_gui_input(const Ref<In
Ref<InputEventMouseButton> mb = p_event; Ref<InputEventMouseButton> mb = p_event;
if (mb.is_valid()) { if (mb.is_valid()) {
drag_type = DRAG_TYPE_NONE;
Vector2 mouse_local_pos = alternative_tiles_control->get_local_mouse_position(); Vector2 mouse_local_pos = alternative_tiles_control->get_local_mouse_position();
if (mb->get_button_index() == MouseButton::LEFT) { if (mb->get_button_index() == MouseButton::LEFT) {
if (mb->is_pressed()) { if (mb->is_pressed()) {
@@ -1919,25 +1917,29 @@ void TileSetAtlasSourceEditor::_tile_alternatives_control_gui_input(const Ref<In
if (mb->is_pressed()) { if (mb->is_pressed()) {
drag_type = DRAG_TYPE_MAY_POPUP_MENU; drag_type = DRAG_TYPE_MAY_POPUP_MENU;
drag_start_mouse_pos = alternative_tiles_control->get_local_mouse_position(); drag_start_mouse_pos = alternative_tiles_control->get_local_mouse_position();
} else if (drag_type == DRAG_TYPE_MAY_POPUP_MENU) { } else {
// Right click released and wasn't dragged too far if (drag_type == DRAG_TYPE_MAY_POPUP_MENU) {
Vector3 tile = tile_atlas_view->get_alternative_tile_at_pos(mouse_local_pos); // Right click released and wasn't dragged too far
Vector3 tile = tile_atlas_view->get_alternative_tile_at_pos(mouse_local_pos);
selection.clear(); selection.clear();
TileSelection selected = { Vector2i(tile.x, tile.y), int(tile.z) }; TileSelection selected = { Vector2i(tile.x, tile.y), int(tile.z) };
if (selected.tile != TileSetSource::INVALID_ATLAS_COORDS) { if (selected.tile != TileSetSource::INVALID_ATLAS_COORDS) {
selection.insert(selected); selection.insert(selected);
}
_update_tile_inspector();
_update_tile_id_label();
if (selection.size() == 1) {
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()));
}
} }
_update_tile_inspector(); drag_type = DRAG_TYPE_NONE;
_update_tile_id_label();
if (selection.size() == 1) {
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()));
}
} }
} }
tile_atlas_control->update(); tile_atlas_control->update();