diff --git a/Scripts/Editor/NodeEditor.cs b/Scripts/Editor/NodeEditor.cs index e03973a..b728aff 100644 --- a/Scripts/Editor/NodeEditor.cs +++ b/Scripts/Editor/NodeEditor.cs @@ -210,6 +210,9 @@ namespace XNodeEditor AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(target)); } + /// Called when entering into rename mode for this node. + public virtual void OnRenameActive() {} + /// Called after this node's name has changed. public virtual void OnRename() {} diff --git a/Scripts/Editor/NodeGroupEditor.cs b/Scripts/Editor/NodeGroupEditor.cs index 7447e63..669d179 100644 --- a/Scripts/Editor/NodeGroupEditor.cs +++ b/Scripts/Editor/NodeGroupEditor.cs @@ -13,6 +13,12 @@ namespace XNodeEditor.NodeGroups private NodeGroup _group; private bool _isDragging; private Vector2 _size; + private float _currentHeight; + + public override void OnCreate() + { + _currentHeight = group.height; + } public override void OnHeaderGUI() { @@ -29,6 +35,7 @@ namespace XNodeEditor.NodeGroups { group.width = Mathf.Max(200, (int)e.mousePosition.x + 16); group.height = Mathf.Max(100, (int)e.mousePosition.y - 34); + _currentHeight = group.height; NodeEditorWindow.current.Repaint(); } @@ -132,8 +139,20 @@ namespace XNodeEditor.NodeGroups break; } - // Control height of node - GUILayout.Space(group.height); + GUILayout.Space(_currentHeight); + } + + public override void OnRenameActive() + { + _currentHeight += 30 - NodeEditorResources.styles.nodeHeaderRename.fixedHeight - + NodeEditorResources.styles.nodeHeaderRename.margin.top + + NodeEditorResources.styles.nodeHeaderRename.margin.bottom / 2; + } + + + public override void OnRename() + { + _currentHeight = group.height; } public override int GetWidth() diff --git a/Scripts/Editor/RenameTextField.cs b/Scripts/Editor/RenameTextField.cs index 1a0427b..11e2217 100644 --- a/Scripts/Editor/RenameTextField.cs +++ b/Scripts/Editor/RenameTextField.cs @@ -38,12 +38,15 @@ namespace XNodeEditor input = GUILayout.TextField(input, NodeEditorResources.styles.nodeHeaderRename); EditorGUI.FocusTextInControl(inputControlName); - // Fixes textfield not being fully selected on multiple consecutive rename activates. if (firstFrame) { + // Fixes textfield not being fully selected on multiple consecutive rename activates. TextEditor textEditor = (TextEditor)GUIUtility.GetStateObject(typeof(TextEditor), GUIUtility.keyboardControl); textEditor.SelectAll(); + + NodeEditor.GetEditor((Node)target, NodeEditorWindow.current).OnRenameActive(); + firstFrame = false; }