X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/2687ec6cbbe8101a4faa232c79f5c1321dcebe6d..a77e53b783db30a8e6e7935ddabe158a67e4221f:/src/editor/modules/documentCanvas/documentCanvas.js?ds=sidebyside

diff --git a/src/editor/modules/documentCanvas/documentCanvas.js b/src/editor/modules/documentCanvas/documentCanvas.js
index 9a88b75..8742aef 100644
--- a/src/editor/modules/documentCanvas/documentCanvas.js
+++ b/src/editor/modules/documentCanvas/documentCanvas.js
@@ -14,7 +14,13 @@ var logger = logging.getLogger('documentCanvas');
 
 return function(sandbox) {
 
-    var canvas = canvas3.fromXMLDocument(null);
+    var canvasElements = [];
+
+    sandbox.getPlugins().forEach(function(plugin) {
+        canvasElements = canvasElements.concat(plugin.canvasElements || []);
+    });
+
+    var canvas = canvas3.fromXMLDocument(null, canvasElements);
     var canvasWrapper = $(template);
     var shownAlready = false;
     var scrollbarPosition = 0,
@@ -76,11 +82,11 @@ return function(sandbox) {
             canvas.setCurrentElement(node);
         },
         onAfterActionExecuted: function(action, ret) {
-            if(ret && ret instanceof canvas.wlxmlDocument.CaretFragment && ret.isValid()) {
+            if(ret && ret.isValid()) {
                 logger.debug('The action returned a valid fragment');
-                canvas.setCurrentElement(ret.node, {caretTo: ret.offset});
-                return;
+                return canvas.select(ret);
             }
+
             logger.debug('No valid fragment returned from the action');
 
             (actionHandlers[action.getPluginName()] || []).forEach(function(handler) {