summaryrefslogtreecommitdiffstats
path: root/scene/gui/graph_node.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2022-09-05 08:36:10 +0200
committerRémi Verschelde <rverschelde@gmail.com>2022-09-05 08:36:10 +0200
commitb5c053321c89217b1cae0d4670d66a1af0c68bc8 (patch)
treefe227d4bc6d24e378f18dd636a56cc668abeecd7 /scene/gui/graph_node.cpp
parent1499840f75b8c0a655b3ca23ac127361934645b0 (diff)
parent9a35ede23f1139bd5b232311c5cfdfec436e6288 (diff)
downloadredot-engine-b5c053321c89217b1cae0d4670d66a1af0c68bc8.tar.gz
Merge pull request #64840 from maximkulkin/graph-edit-node-selection
Add GraphNode 'selected' and 'deselected' signals, simplify GraphEdit
Diffstat (limited to 'scene/gui/graph_node.cpp')
-rw-r--r--scene/gui/graph_node.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/scene/gui/graph_node.cpp b/scene/gui/graph_node.cpp
index 5976d9fc37..f441144a8e 100644
--- a/scene/gui/graph_node.cpp
+++ b/scene/gui/graph_node.cpp
@@ -736,11 +736,12 @@ Vector2 GraphNode::get_position_offset() const {
}
void GraphNode::set_selected(bool p_selected) {
- if (selected == p_selected) {
+ if (!is_selectable() || selected == p_selected) {
return;
}
selected = p_selected;
+ emit_signal(p_selected ? SNAME("selected") : SNAME("deselected"));
queue_redraw();
}
@@ -1012,6 +1013,9 @@ bool GraphNode::is_draggable() {
}
void GraphNode::set_selectable(bool p_selectable) {
+ if (!p_selectable) {
+ set_selected(false);
+ }
selectable = p_selectable;
}
@@ -1123,6 +1127,8 @@ void GraphNode::_bind_methods() {
ADD_GROUP("", "");
ADD_SIGNAL(MethodInfo("position_offset_changed"));
+ ADD_SIGNAL(MethodInfo("selected"));
+ ADD_SIGNAL(MethodInfo("deselected"));
ADD_SIGNAL(MethodInfo("slot_updated", PropertyInfo(Variant::INT, "idx")));
ADD_SIGNAL(MethodInfo("dragged", PropertyInfo(Variant::VECTOR2, "from"), PropertyInfo(Variant::VECTOR2, "to")));
ADD_SIGNAL(MethodInfo("raise_request"));