Merge pull request #40228 from mrushyendra/multinode_selection_master

Emit signals for GraphEdit multi-node selection and unselection
This commit is contained in:
Rémi Verschelde 2020-07-10 13:34:38 +02:00 committed by GitHub
commit ad9e5ae984
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -812,9 +812,20 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
bool in_box = r.intersects(box_selecting_rect);
if (in_box) {
if (!gn->is_selected() && box_selection_mode_additive) {
emit_signal("node_selected", gn);
} else if (gn->is_selected() && !box_selection_mode_additive) {
emit_signal("node_unselected", gn);
}
gn->set_selected(box_selection_mode_additive);
} else {
gn->set_selected(previus_selected.find(gn) != nullptr);
bool select = (previus_selected.find(gn) != nullptr);
if (gn->is_selected() && !select) {
emit_signal("node_unselected", gn);
} else if (!gn->is_selected() && select) {
emit_signal("node_selected", gn);
}
gn->set_selected(select);
}
}
@ -832,7 +843,13 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
continue;
}
gn->set_selected(previus_selected.find(gn) != nullptr);
bool select = (previus_selected.find(gn) != nullptr);
if (gn->is_selected() && !select) {
emit_signal("node_unselected", gn);
} else if (!gn->is_selected() && select) {
emit_signal("node_selected", gn);
}
gn->set_selected(select);
}
top_layer->update();
} else {
@ -855,6 +872,7 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
Rect2 r = gn->get_rect();
r.size *= zoom;
if (r.has_point(b->get_position())) {
emit_signal("node_unselected", gn);
gn->set_selected(false);
}
}