editor: plugins/core - undo/redo action support for restoring pre action canvas selection
authorAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Tue, 13 May 2014 09:57:17 +0000 (11:57 +0200)
committerAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Tue, 13 May 2014 09:57:17 +0000 (11:57 +0200)
If a valid/restorable fragment is available in a transaction metadata it
gets passed to the callback where client code can handle selection restore.

src/editor/plugins/core/core.js

index 935b6d4..ba6229f 100644 (file)
@@ -79,7 +79,17 @@ var undoRedoAction = function(dir) {
             icon: 'share-alt',
             iconStyle: dir === 'undo' ? '-webkit-transform: scale(-1,1); transform: scale(-1, 1)' : '',
             execute: function(callback, params) {
             icon: 'share-alt',
             iconStyle: dir === 'undo' ? '-webkit-transform: scale(-1,1); transform: scale(-1, 1)' : '',
             execute: function(callback, params) {
+                var metadata = _.last(params.document[dir+'Stack']).metadata,
+                    fragment = metadata && metadata.fragment;
                 params.document[dir]();
                 params.document[dir]();
+                if(fragment) {
+                    if(!fragment.isValid()) {
+                        fragment.restoreFromPaths();
+                    }
+                    if(fragment.isValid()) {
+                        callback(fragment);
+                    }
+                }
                 callback();
             },
         },
                 callback();
             },
         },