diff --git a/www/pad/main.js b/www/pad/main.js index cb536cfac..084d57746 100644 --- a/www/pad/main.js +++ b/www/pad/main.js @@ -47,7 +47,7 @@ define([ var isNotMagicLine = function (el) { // factor as: // return !(el.tagName === 'SPAN' && el.contentEditable === 'false'); - var filter = (el.tagName === 'SPAN' && el.contentEditable === 'false'); + var filter = (el.tagName === 'SPAN' && el.getAttribute('contentEditable') === 'false'); if (filter) { console.log("[hyperjson.serializer] prevented an element" + "from being serialized:", el); @@ -62,6 +62,20 @@ define([ return hj; }; + /* TODO integrate into flow to prevent browser fights over style */ + var setStyle = function (elem, newStyleAttr) { + elem.setAttribute("data-chainpad-origstyle", newStyleAttr); + elem.setAttribute("style", newStyleAttr); + elem.setAttribute("data-chainpad-styleclone", elem.getAttribute("style")); + }; + + /* TODO integrate into flow to prevent browser fights over style */ + var getStyle = function (elem) { + var st = elem.getAttribute("style"); + if (elem.getAttribute("data-chainpad-styleclone") !== st) { return st; } + return elem.getAttribute("data-chainpad-origstyle"); + }; + var andThen = function (Ckeditor) { /* This is turned off because we prefer that the channel name be chosen by the server, not generated by the client. @@ -225,6 +239,9 @@ define([ // apply patches, and try not to lose the cursor in the process! var applyHjson = function (shjson) { var userDocStateDom = hjsonToDom(JSON.parse(shjson)); + + // we *might* be able to remove this now + // changes to hyperscript fixed this bug *maybe* --ansuz userDocStateDom.setAttribute("contenteditable", "true"); // lol wtf var patch = (DD).diff(inner, userDocStateDom); (DD).apply(inner, patch);