smartxml: fix
[fnpeditor.git] / src / editor / modules / nodePane / nodePane.js
index f7e6694..25e5ddb 100644 (file)
@@ -12,13 +12,20 @@ return function(sandbox) {
     
     var view = $(_.template(templateSrc)({utils: wlxmlUtils})),
         listens = false,
     
     var view = $(_.template(templateSrc)({utils: wlxmlUtils})),
         listens = false,
-        currentNode;
+        currentNode,
+        msgs = {
+            Tag: gettext('Tag editing'),
+            Class: gettext('Class editing')
+        };
     
     view.on('change', 'select', function(e) {
         var target = $(e.target);
         var attr = target.attr('class').split('-')[3] === 'tagSelect' ? 'Tag' : 'Class',
     
     view.on('change', 'select', function(e) {
         var target = $(e.target);
         var attr = target.attr('class').split('-')[3] === 'tagSelect' ? 'Tag' : 'Class',
-            value = target.val().replace(/-/g, '.');
-        currentNode['set' + attr](value);
+            value = target.val().replace(/-/g, '.'),
+            oldValue = attr === 'Tag' ? currentNode.getTagName() : currentNode.getClass();
+        currentNode.document.transaction(function() {
+            currentNode['set' + attr](value);
+        }, this, msgs[attr] + ': ' + oldValue + ' -> ' + value);
     });
 
 
     });
 
 
@@ -35,6 +42,9 @@ return function(sandbox) {
                 var module = this;
                 if(!listens) {
                     wlxmlNodeElement.document.on('change', function(event) {
                 var module = this;
                 if(!listens) {
                     wlxmlNodeElement.document.on('change', function(event) {
+                        if(currentNode && !currentNode.isInDocument()) {
+                            module.setNodeElement(null);
+                        }
                         if(event.type === 'nodeAttrChange' && event.meta.node.sameNode(currentNode)) {
                             module.setNodeElement(currentNode);
                         }
                         if(event.type === 'nodeAttrChange' && event.meta.node.sameNode(currentNode)) {
                             module.setNodeElement(currentNode);
                         }