summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/classes/NodePath.xml13
-rw-r--r--editor/project_settings_editor.cpp3
2 files changed, 16 insertions, 0 deletions
diff --git a/doc/classes/NodePath.xml b/doc/classes/NodePath.xml
index 5deee941da..0310068a90 100644
--- a/doc/classes/NodePath.xml
+++ b/doc/classes/NodePath.xml
@@ -7,6 +7,19 @@
A pre-parsed relative or absolute path in a scene tree, for use with [method Node.get_node] and similar functions. It can reference a node, a resource within a node, or a property of a node or resource. For instance, [code]"Path2D/PathFollow2D/Sprite:texture:size"[/code] would refer to the [code]size[/code] property of the [code]texture[/code] resource on the node named [code]"Sprite"[/code] which is a child of the other named nodes in the path.
You will usually just pass a string to [method Node.get_node] and it will be automatically converted, but you may occasionally want to parse a path ahead of time with [NodePath] or the literal syntax [code]@"path"[/code]. Exporting a [NodePath] variable will give you a node selection widget in the properties panel of the editor, which can often be useful.
A [NodePath] is composed of a list of slash-separated node names (like a filesystem path) and an optional colon-separated list of "subnames" which can be resources or properties.
+ Some examples of NodePaths include the following:
+ [codeblock]
+ # No leading slash means it is relative to the current node.
+ @"A" # Immediate child A
+ @"A/B" # A's child B
+ @"." # The current node.
+ @".." # The parent node.
+ @"../C" # A sibling node C.
+ # A leading slash means it is absolute from the SceneTree.
+ @"/root" # Equivalent to get_tree().get_root().
+ @"/root/Main" # If your main scene's root node were named "Main".
+ @"/root/MyAutoload" # If you have an autoloaded node or scene.
+ [/codeblock]
</description>
<tutorials>
</tutorials>
diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp
index 9ac775e456..0428aafe7e 100644
--- a/editor/project_settings_editor.cpp
+++ b/editor/project_settings_editor.cpp
@@ -445,6 +445,7 @@ void ProjectSettingsEditor::_wait_for_key(const Ref<InputEvent> &p_event) {
const String str = keycode_get_string(k->get_scancode_with_modifiers());
press_a_key_label->set_text(str);
+ press_a_key->get_ok()->set_disabled(false);
press_a_key->accept_event();
}
}
@@ -458,6 +459,7 @@ void ProjectSettingsEditor::_add_item(int p_item, Ref<InputEvent> p_exiting_even
case INPUT_KEY: {
press_a_key_label->set_text(TTR("Press a Key..."));
+ press_a_key->get_ok()->set_disabled(true);
last_wait_for_key = Ref<InputEvent>();
press_a_key->popup_centered(Size2(250, 80) * EDSCALE);
press_a_key->grab_focus();
@@ -1958,6 +1960,7 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) {
l->set_align(Label::ALIGN_CENTER);
l->set_margin(MARGIN_TOP, 20);
l->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_BEGIN, 30);
+ press_a_key->get_ok()->set_disabled(true);
press_a_key_label = l;
press_a_key->add_child(l);
press_a_key->connect("gui_input", this, "_wait_for_key");