Revert "Reordering emitted signals in PopupMenu" and fix editor selection issue in the safer way.
This commit is contained in:
parent
6296b46008
commit
cebfc02d6f
5 changed files with 14 additions and 7 deletions
|
@ -896,15 +896,16 @@ void CanvasItemEditor::_snap_changed() {
|
|||
}
|
||||
|
||||
void CanvasItemEditor::_selection_result_pressed(int p_result) {
|
||||
if (selection_results.size() <= p_result) {
|
||||
if (selection_results_menu.size() <= p_result) {
|
||||
return;
|
||||
}
|
||||
|
||||
CanvasItem *item = selection_results[p_result].item;
|
||||
CanvasItem *item = selection_results_menu[p_result].item;
|
||||
|
||||
if (item) {
|
||||
_select_click_on_item(item, Point2(), selection_menu_additive_selection);
|
||||
}
|
||||
selection_results_menu.clear();
|
||||
}
|
||||
|
||||
void CanvasItemEditor::_selection_menu_hide() {
|
||||
|
@ -2247,6 +2248,7 @@ bool CanvasItemEditor::_gui_input_select(const Ref<InputEvent> &p_event) {
|
|||
selection_menu->set_item_tooltip(i, String(item->get_name()) + "\nType: " + item->get_class() + "\nPath: " + node_path);
|
||||
}
|
||||
|
||||
selection_results_menu = selection_results;
|
||||
selection_menu_additive_selection = b->is_shift_pressed();
|
||||
selection_menu->set_position(viewport->get_screen_transform().xform(b->get_position()));
|
||||
selection_menu->reset_size();
|
||||
|
|
|
@ -256,6 +256,7 @@ private:
|
|||
}
|
||||
};
|
||||
Vector<_SelectResult> selection_results;
|
||||
Vector<_SelectResult> selection_results_menu;
|
||||
|
||||
struct _HoverResult {
|
||||
Point2 position;
|
||||
|
|
|
@ -1543,6 +1543,7 @@ void Node3DEditorViewport::_list_select(Ref<InputEventMouseButton> b) {
|
|||
selection_menu->set_item_tooltip(i, String(spat->get_name()) + "\nType: " + spat->get_class() + "\nPath: " + node_path);
|
||||
}
|
||||
|
||||
selection_results_menu = selection_results;
|
||||
selection_menu->set_position(get_screen_position() + b->get_position());
|
||||
selection_menu->reset_size();
|
||||
selection_menu->popup();
|
||||
|
@ -3609,15 +3610,17 @@ void Node3DEditorViewport::_toggle_cinema_preview(bool p_activate) {
|
|||
}
|
||||
|
||||
void Node3DEditorViewport::_selection_result_pressed(int p_result) {
|
||||
if (selection_results.size() <= p_result) {
|
||||
if (selection_results_menu.size() <= p_result) {
|
||||
return;
|
||||
}
|
||||
|
||||
clicked = selection_results[p_result].item->get_instance_id();
|
||||
clicked = selection_results_menu[p_result].item->get_instance_id();
|
||||
|
||||
if (clicked.is_valid()) {
|
||||
_select_clicked(spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT);
|
||||
}
|
||||
|
||||
selection_results_menu.clear();
|
||||
}
|
||||
|
||||
void Node3DEditorViewport::_selection_menu_hide() {
|
||||
|
|
|
@ -290,6 +290,7 @@ private:
|
|||
ObjectID clicked;
|
||||
ObjectID material_target;
|
||||
Vector<_RayResult> selection_results;
|
||||
Vector<_RayResult> selection_results_menu;
|
||||
bool clicked_wants_append = false;
|
||||
bool selection_in_progress = false;
|
||||
|
||||
|
|
|
@ -1715,12 +1715,12 @@ void PopupMenu::activate_item(int p_item) {
|
|||
need_hide = false;
|
||||
}
|
||||
|
||||
emit_signal(SNAME("id_pressed"), id);
|
||||
emit_signal(SNAME("index_pressed"), p_item);
|
||||
|
||||
if (need_hide) {
|
||||
hide();
|
||||
}
|
||||
|
||||
emit_signal(SNAME("id_pressed"), id);
|
||||
emit_signal(SNAME("index_pressed"), p_item);
|
||||
}
|
||||
|
||||
void PopupMenu::remove_item(int p_idx) {
|
||||
|
|
Loading…
Reference in a new issue