mirror of
https://github.com/Siccity/xNode.git
synced 2025-12-20 09:16:01 +08:00
Added renaming undo/redo.
Fixed keyboard controls for renaming.
This commit is contained in:
parent
5ec46e53a1
commit
6e579667b2
@ -435,7 +435,6 @@ namespace XNodeEditor
|
|||||||
if (isDoubleClick)
|
if (isDoubleClick)
|
||||||
{
|
{
|
||||||
RenameSelectedNodeTextField();
|
RenameSelectedNodeTextField();
|
||||||
currentActivity = NodeActivity.Renaming;
|
|
||||||
// Vector2 nodeDimension = nodeSizes.ContainsKey(hoveredNode)
|
// Vector2 nodeDimension = nodeSizes.ContainsKey(hoveredNode)
|
||||||
// ? nodeSizes[hoveredNode] / 2
|
// ? nodeSizes[hoveredNode] / 2
|
||||||
// : Vector2.zero;
|
// : Vector2.zero;
|
||||||
@ -517,7 +516,7 @@ namespace XNodeEditor
|
|||||||
isDoubleClick = false;
|
isDoubleClick = false;
|
||||||
break;
|
break;
|
||||||
case EventType.KeyDown:
|
case EventType.KeyDown:
|
||||||
if (EditorGUIUtility.editingTextField || GUIUtility.keyboardControl != 0)
|
if (EditorGUIUtility.editingTextField)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -531,14 +530,14 @@ namespace XNodeEditor
|
|||||||
{
|
{
|
||||||
if (e.keyCode == KeyCode.Return)
|
if (e.keyCode == KeyCode.Return)
|
||||||
{
|
{
|
||||||
RenameSelectedNode();
|
RenameSelectedNodeTextField();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (e.keyCode == KeyCode.F2)
|
if (e.keyCode == KeyCode.F2)
|
||||||
{
|
{
|
||||||
RenameSelectedNode();
|
RenameSelectedNodeTextField();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -721,16 +720,8 @@ namespace XNodeEditor
|
|||||||
{
|
{
|
||||||
if (Selection.objects.Length == 1 && Selection.activeObject is Node)
|
if (Selection.objects.Length == 1 && Selection.activeObject is Node)
|
||||||
{
|
{
|
||||||
Node node = Selection.activeObject as Node;
|
currentActivity = NodeActivity.Renaming;
|
||||||
Vector2 size;
|
RenameTextField.Show(Selection.activeObject);
|
||||||
if (nodeSizes.TryGetValue(node, out size))
|
|
||||||
{
|
|
||||||
RenameTextField.Show(Selection.activeObject, size.x);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
RenameTextField.Show(Selection.activeObject);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@ namespace XNodeEditor
|
|||||||
private bool firstFrame = true;
|
private bool firstFrame = true;
|
||||||
|
|
||||||
/// <summary> Show a rename text field for an asset in the node header. Will trigger reimport of the asset on apply.
|
/// <summary> Show a rename text field for an asset in the node header. Will trigger reimport of the asset on apply.
|
||||||
public static RenameTextField Show(Object target, float width = 200)
|
public static RenameTextField Show(Object target)
|
||||||
{
|
{
|
||||||
RenameTextField textField = new RenameTextField();
|
RenameTextField textField = new RenameTextField();
|
||||||
if (current != null)
|
if (current != null)
|
||||||
@ -38,6 +38,7 @@ namespace XNodeEditor
|
|||||||
input = GUILayout.TextField(input, NodeEditorResources.styles.nodeHeaderRename);
|
input = GUILayout.TextField(input, NodeEditorResources.styles.nodeHeaderRename);
|
||||||
EditorGUI.FocusTextInControl(inputControlName);
|
EditorGUI.FocusTextInControl(inputControlName);
|
||||||
|
|
||||||
|
// Fixes textfield not being fully selected on multiple consecutive rename activates.
|
||||||
if (firstFrame)
|
if (firstFrame)
|
||||||
{
|
{
|
||||||
TextEditor textEditor =
|
TextEditor textEditor =
|
||||||
@ -72,6 +73,9 @@ namespace XNodeEditor
|
|||||||
|
|
||||||
public void SaveAndClose()
|
public void SaveAndClose()
|
||||||
{
|
{
|
||||||
|
// Enabled undoing of renaming.
|
||||||
|
Undo.RecordObject(target, $"Renamed Node: [{target.name}] -> [{input}]");
|
||||||
|
|
||||||
target.name = input;
|
target.name = input;
|
||||||
NodeEditor.GetEditor((Node)target, NodeEditorWindow.current).OnRename();
|
NodeEditor.GetEditor((Node)target, NodeEditorWindow.current).OnRename();
|
||||||
if (!string.IsNullOrEmpty(AssetDatabase.GetAssetPath(target)))
|
if (!string.IsNullOrEmpty(AssetDatabase.GetAssetPath(target)))
|
||||||
@ -88,7 +92,12 @@ namespace XNodeEditor
|
|||||||
{
|
{
|
||||||
firstFrame = true;
|
firstFrame = true;
|
||||||
current = null;
|
current = null;
|
||||||
|
|
||||||
|
EditorGUIUtility.editingTextField = false;
|
||||||
NodeEditorWindow.current.Repaint();
|
NodeEditorWindow.current.Repaint();
|
||||||
|
|
||||||
|
// If another action has not taken precedence, then just return to an idle state.
|
||||||
|
// E.g Would not run if another action was taken such as clicking another node or clicking the empty graph.
|
||||||
if (NodeEditorWindow.currentActivity == NodeEditorWindow.NodeActivity.Renaming)
|
if (NodeEditorWindow.currentActivity == NodeEditorWindow.NodeActivity.Renaming)
|
||||||
{
|
{
|
||||||
NodeEditorWindow.currentActivity = NodeEditorWindow.NodeActivity.Idle;
|
NodeEditorWindow.currentActivity = NodeEditorWindow.NodeActivity.Idle;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user