From 11c8f29672e98b7f9f9da6acb2dee55bd9c5731d Mon Sep 17 00:00:00 2001 From: Thomas Morgner Date: Fri, 16 Nov 2018 12:01:34 +0000 Subject: [PATCH] Clear edit-mode when reselecting node while renaming node --- Scripts/Editor/NodeEditor.cs | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/Scripts/Editor/NodeEditor.cs b/Scripts/Editor/NodeEditor.cs index fa4e110..8b06c26 100644 --- a/Scripts/Editor/NodeEditor.cs +++ b/Scripts/Editor/NodeEditor.cs @@ -13,19 +13,28 @@ namespace XNodeEditor { /// Fires every whenever a node was modified through the editor public static Action onUpdateNode; public static Dictionary portPositions; - public static int renaming; + public int renaming; public virtual void OnHeaderGUI() { string title = target.name; - if (renaming != 0 && Selection.Contains(target)) { - int controlID = EditorGUIUtility.GetControlID(FocusType.Keyboard) + 1; - if (renaming == 1) { - EditorGUIUtility.keyboardControl = controlID; - EditorGUIUtility.editingTextField = true; - renaming = 2; + if (renaming != 0) { + if (Selection.Contains(target)) { + int controlID = EditorGUIUtility.GetControlID(FocusType.Keyboard) + 1; + if (renaming == 1) { + EditorGUIUtility.keyboardControl = controlID; + EditorGUIUtility.editingTextField = true; + renaming = 2; + } + target.name = EditorGUILayout.TextField(target.name, NodeEditorResources.styles.nodeHeader, GUILayout.Height(30)); + if (!EditorGUIUtility.editingTextField) { + Debug.Log("Finish renaming"); + Rename(target.name); + renaming = 0; + } } - target.name = EditorGUILayout.TextField(target.name, NodeEditorResources.styles.nodeHeader, GUILayout.Height(30)); - if (!EditorGUIUtility.editingTextField) { + else { + // Selection changed, so stop renaming. + GUILayout.Label(title, NodeEditorResources.styles.nodeHeader, GUILayout.Height(30)); Rename(target.name); renaming = 0; }