diff --git a/lib/editor/atto/plugins/rtl/yui/build/moodle-atto_rtl-button/moodle-atto_rtl-button-debug.js b/lib/editor/atto/plugins/rtl/yui/build/moodle-atto_rtl-button/moodle-atto_rtl-button-debug.js index 21c7aa6d079..88f3f6c4ee6 100644 --- a/lib/editor/atto/plugins/rtl/yui/build/moodle-atto_rtl-button/moodle-atto_rtl-button-debug.js +++ b/lib/editor/atto/plugins/rtl/yui/build/moodle-atto_rtl-button/moodle-atto_rtl-button-debug.js @@ -65,7 +65,9 @@ Y.namespace('M.atto_rtl').Button = Y.Base.create('button', Y.M.editor_atto.Edito */ _toggleRTL: function(e, direction) { var host = this.get('host'), - selection = host.getSelection(); + sourceSelection = rangy.saveSelection(), + selection = host.getSelection(), + newDirection = { rtl: 'ltr', ltr: 'rtl' }; if (selection) { // Format the selection to be sure it has a tag parent (not the contenteditable). var parentNode = host.formatSelectionBlock(), @@ -73,11 +75,13 @@ Y.namespace('M.atto_rtl').Button = Y.Base.create('button', Y.M.editor_atto.Edito var currentDirection = parentDOMNode.getAttribute('dir'); if (currentDirection === direction) { - parentDOMNode.removeAttribute("dir"); + parentDOMNode.setAttribute("dir", newDirection[direction]); } else { parentDOMNode.setAttribute("dir", direction); } + // Change selection from the containing paragraph to the original one. + rangy.restoreSelection(sourceSelection); // Mark the text as having been updated. this.markUpdated(); } diff --git a/lib/editor/atto/plugins/rtl/yui/build/moodle-atto_rtl-button/moodle-atto_rtl-button-min.js b/lib/editor/atto/plugins/rtl/yui/build/moodle-atto_rtl-button/moodle-atto_rtl-button-min.js index e13cd666ea8..51d0be479a8 100644 --- a/lib/editor/atto/plugins/rtl/yui/build/moodle-atto_rtl-button/moodle-atto_rtl-button-min.js +++ b/lib/editor/atto/plugins/rtl/yui/build/moodle-atto_rtl-button/moodle-atto_rtl-button-min.js @@ -1 +1 @@ -YUI.add("moodle-atto_rtl-button",function(e,t){e.namespace("M.atto_rtl").Button=e.Base.create("button",e.M.editor_atto.EditorPlugin,[],{initializer:function(){var e;e="ltr",this.addButton({icon:"e/left_to_right",title:e,buttonName:e,callback:this._toggleRTL,callbackArgs:e}),e="rtl",this.addButton({icon:"e/right_to_left",title:e,buttonName:e,callback:this._toggleRTL,callbackArgs:e})},_toggleRTL:function(e,t){var n=this.get("host"),r=n.getSelection();if(r){var i=n.formatSelectionBlock(),s=i.getDOMNode(),o=s.getAttribute("dir");o===t?s.removeAttribute("dir"):s.setAttribute("dir",t),this.markUpdated()}}})},"@VERSION@",{requires:["moodle-editor_atto-plugin"]}); +YUI.add("moodle-atto_rtl-button",function(e,t){e.namespace("M.atto_rtl").Button=e.Base.create("button",e.M.editor_atto.EditorPlugin,[],{initializer:function(){var e;e="ltr",this.addButton({icon:"e/left_to_right",title:e,buttonName:e,callback:this._toggleRTL,callbackArgs:e}),e="rtl",this.addButton({icon:"e/right_to_left",title:e,buttonName:e,callback:this._toggleRTL,callbackArgs:e})},_toggleRTL:function(e,t){var n=this.get("host"),r=rangy.saveSelection(),i=n.getSelection(),s={rtl:"ltr",ltr:"rtl"};if(i){var o=n.formatSelectionBlock(),u=o.getDOMNode(),a=u.getAttribute("dir");a===t?u.setAttribute("dir",s[t]):u.setAttribute("dir",t),rangy.restoreSelection(r),this.markUpdated()}}})},"@VERSION@",{requires:["moodle-editor_atto-plugin"]}); diff --git a/lib/editor/atto/plugins/rtl/yui/build/moodle-atto_rtl-button/moodle-atto_rtl-button.js b/lib/editor/atto/plugins/rtl/yui/build/moodle-atto_rtl-button/moodle-atto_rtl-button.js index 21c7aa6d079..88f3f6c4ee6 100644 --- a/lib/editor/atto/plugins/rtl/yui/build/moodle-atto_rtl-button/moodle-atto_rtl-button.js +++ b/lib/editor/atto/plugins/rtl/yui/build/moodle-atto_rtl-button/moodle-atto_rtl-button.js @@ -65,7 +65,9 @@ Y.namespace('M.atto_rtl').Button = Y.Base.create('button', Y.M.editor_atto.Edito */ _toggleRTL: function(e, direction) { var host = this.get('host'), - selection = host.getSelection(); + sourceSelection = rangy.saveSelection(), + selection = host.getSelection(), + newDirection = { rtl: 'ltr', ltr: 'rtl' }; if (selection) { // Format the selection to be sure it has a tag parent (not the contenteditable). var parentNode = host.formatSelectionBlock(), @@ -73,11 +75,13 @@ Y.namespace('M.atto_rtl').Button = Y.Base.create('button', Y.M.editor_atto.Edito var currentDirection = parentDOMNode.getAttribute('dir'); if (currentDirection === direction) { - parentDOMNode.removeAttribute("dir"); + parentDOMNode.setAttribute("dir", newDirection[direction]); } else { parentDOMNode.setAttribute("dir", direction); } + // Change selection from the containing paragraph to the original one. + rangy.restoreSelection(sourceSelection); // Mark the text as having been updated. this.markUpdated(); } diff --git a/lib/editor/atto/plugins/rtl/yui/src/button/js/button.js b/lib/editor/atto/plugins/rtl/yui/src/button/js/button.js index b7d96f03a55..0fb3d3bb845 100644 --- a/lib/editor/atto/plugins/rtl/yui/src/button/js/button.js +++ b/lib/editor/atto/plugins/rtl/yui/src/button/js/button.js @@ -63,7 +63,9 @@ Y.namespace('M.atto_rtl').Button = Y.Base.create('button', Y.M.editor_atto.Edito */ _toggleRTL: function(e, direction) { var host = this.get('host'), - selection = host.getSelection(); + sourceSelection = rangy.saveSelection(), + selection = host.getSelection(), + newDirection = { rtl: 'ltr', ltr: 'rtl' }; if (selection) { // Format the selection to be sure it has a tag parent (not the contenteditable). var parentNode = host.formatSelectionBlock(), @@ -71,11 +73,13 @@ Y.namespace('M.atto_rtl').Button = Y.Base.create('button', Y.M.editor_atto.Edito var currentDirection = parentDOMNode.getAttribute('dir'); if (currentDirection === direction) { - parentDOMNode.removeAttribute("dir"); + parentDOMNode.setAttribute("dir", newDirection[direction]); } else { parentDOMNode.setAttribute("dir", direction); } + // Change selection from the containing paragraph to the original one. + rangy.restoreSelection(sourceSelection); // Mark the text as having been updated. this.markUpdated(); }