|
@@ -849,10 +849,22 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
|
|
r.size *= zoom;
|
|
r.size *= zoom;
|
|
bool in_box = r.intersects(box_selecting_rect);
|
|
bool in_box = r.intersects(box_selecting_rect);
|
|
|
|
|
|
- if (in_box)
|
|
|
|
|
|
+ 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);
|
|
gn->set_selected(box_selection_mode_additive);
|
|
- else
|
|
|
|
- gn->set_selected(previus_selected.find(gn) != NULL);
|
|
|
|
|
|
+ } else {
|
|
|
|
+ bool select = (previus_selected.find(gn) != NULL);
|
|
|
|
+ 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();
|
|
top_layer->update();
|
|
@@ -870,7 +882,13 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
|
|
if (!gn)
|
|
if (!gn)
|
|
continue;
|
|
continue;
|
|
|
|
|
|
- gn->set_selected(previus_selected.find(gn) != NULL);
|
|
|
|
|
|
+ bool select = (previus_selected.find(gn) != NULL);
|
|
|
|
+ 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();
|
|
top_layer->update();
|
|
} else {
|
|
} else {
|
|
@@ -893,6 +911,7 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
|
|
Rect2 r = gn->get_rect();
|
|
Rect2 r = gn->get_rect();
|
|
r.size *= zoom;
|
|
r.size *= zoom;
|
|
if (r.has_point(b->get_position())) {
|
|
if (r.has_point(b->get_position())) {
|
|
|
|
+ emit_signal("node_unselected", gn);
|
|
gn->set_selected(false);
|
|
gn->set_selected(false);
|
|
}
|
|
}
|
|
}
|
|
}
|