@@ -85,8 +85,13 @@ Panel {
8585 function validateNodeNameChange (name ) {
8686 if (root .node && name .trim () !== " " ) {
8787 const newNodeName = _reconstruction .renameNode (_reconstruction .selectedNode , name .trim ())
88- root .displayNodeName = newNodeName
89- root .validatedNodeName = newNodeName
88+ if (newNodeName == " " ) {
89+ root .displayNodeName = root .nodeName
90+ root .validatedNodeName = root .nodeName
91+ } else {
92+ root .displayNodeName = newNodeName
93+ root .validatedNodeName = newNodeName
94+ }
9095 }
9196 }
9297 function cancelNodeNameChange () {
@@ -110,6 +115,7 @@ Panel {
110115 id: nodeNameField
111116 visible: root .node !== null
112117 text: root .displayNodeName
118+ validator: RegularExpressionValidator { regularExpression: / ^ [0-9A-Za-z ] + $ / }
113119 font .bold : true
114120 readOnly: true
115121 selectByMouse: false
@@ -125,6 +131,10 @@ Panel {
125131 radius: 2
126132 }
127133
134+ function refreshText () {
135+ nodeNameField .text = Qt .binding (function () { return root .displayNodeName })
136+ }
137+
128138 MouseArea {
129139 anchors .fill : parent
130140 enabled: nodeNameField .readOnly
@@ -141,6 +151,7 @@ Panel {
141151 Keys .onReturnPressed : {
142152 if (! readOnly) {
143153 root .validateNodeNameChange (text)
154+ nodeNameField .refreshText ()
144155 readOnly = true
145156 selectByMouse = false
146157 }
@@ -149,6 +160,7 @@ Panel {
149160 Keys .onEnterPressed : {
150161 if (! readOnly) {
151162 root .validateNodeNameChange (text)
163+ nodeNameField .refreshText ()
152164 readOnly = true
153165 selectByMouse = false
154166 }
@@ -157,6 +169,7 @@ Panel {
157169 Keys .onEscapePressed : {
158170 if (! readOnly) {
159171 root .cancelNodeNameChange ()
172+ nodeNameField .refreshText ()
160173 readOnly = true
161174 selectByMouse = false
162175 }
@@ -166,10 +179,23 @@ Panel {
166179 if (! activeFocus && ! readOnly) {
167180 // Focus lost without pressing Enter - discard changes
168181 root .cancelNodeNameChange ()
182+ nodeNameField .refreshText ()
169183 readOnly = true
170184 selectByMouse = false
171185 }
172186 }
187+
188+ Connections {
189+ target: _reconstruction
190+ function onSelectedNodeChanged () {
191+ if (! activeFocus && ! readOnly) {
192+ root .cancelNodeNameChange ()
193+ nodeNameField .refreshText ()
194+ nodeNameField .readOnly = true
195+ nodeNameField .selectByMouse = false
196+ }
197+ }
198+ }
173199 }
174200
175201 // Show node type if the node name does not start with "nodeType_"
0 commit comments