X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/c833dec45110d8cb85cdf63813a17b1c27516552..443df0e0784763b93184fc5c1cdb8f2aae40e1d6:/src/editor/modules/documentCanvas/canvas/canvas.js?ds=sidebyside

diff --git a/src/editor/modules/documentCanvas/canvas/canvas.js b/src/editor/modules/documentCanvas/canvas/canvas.js
index 3dac88f..bc7e2a7 100644
--- a/src/editor/modules/documentCanvas/canvas/canvas.js
+++ b/src/editor/modules/documentCanvas/canvas/canvas.js
@@ -97,6 +97,15 @@ var Canvas = function(wlxmlDocument, elements, metadata, sandbox) {
 
 $.extend(Canvas.prototype, Backbone.Events, {
 
+    createElementType: function(elementPrototype) {
+        /* TODO: reconcile this with ElementsRegister behavior */
+        var Constructor = function() {
+            documentElement.DocumentNodeElement.apply(this, Array.prototype.slice.call(arguments, 0));
+        };
+        Constructor.prototype = elementPrototype;
+        return Constructor;
+    },
+
     getElementOffset: function(element) {
         return element.dom.offset().top - this.dom.offset().top;
     },
@@ -153,6 +162,11 @@ $.extend(Canvas.prototype, Backbone.Events, {
             //return DocumentTextElement.fromHTMLElement(htmlElement, canvas);
             return $element.data('canvas-element');
         }
+
+        /* experimental */
+        if($element.parent().data('canvas-element')) {
+            return $element.parent().data('canvas-element');
+        }
     },
 
     reloadRoot: function() {
@@ -165,7 +179,9 @@ $.extend(Canvas.prototype, Backbone.Events, {
 
     triggerKeyEvent: function(keyEvent, selection) {
         selection = selection || this.getSelection();
-        if(selection && (selection.type === 'caret' || selection.type === 'textSelection') && selection.toDocumentFragment().isValid()) {
+        if(selection && (
+            (selection.type === 'caret' || selection.type === 'textSelection') && selection.toDocumentFragment().isValid()
+            || selection.type == 'nodeSelection')) {
             keyboard.handleKeyEvent(keyEvent, selection);
         }
     },