JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.4.1
[ckeditor.git] / _source / plugins / bidi / plugin.js
index c91af0a..6c5d8a6 100644 (file)
@@ -11,12 +11,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
 \r
        function onSelectionChange( evt )\r
        {\r
-               evt.editor.getCommand( 'bidirtl' ).setState( getState( evt.editor, evt.data.path, 'rtl' ) );\r
-               evt.editor.getCommand( 'bidiltr' ).setState( getState( evt.editor, evt.data.path, 'ltr' ) );\r
-       }\r
-\r
-       function getState( editor, path, dir )\r
-       {\r
+               var editor = evt.editor,\r
+                       path = evt.data.path;\r
                var useComputedState = editor.config.useComputedState,\r
                        selectedElement;\r
 \r
@@ -39,14 +35,21 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
                selectedElement = selectedElement || path.block || path.blockLimit;\r
 \r
                if ( !selectedElement || selectedElement.getName() == 'body' )\r
-                       return CKEDITOR.TRISTATE_OFF;\r
+                       return;\r
 \r
-               selectedElement = useComputedState ?\r
+               var selectionDir = useComputedState ?\r
                        selectedElement.getComputedStyle( 'direction' ) :\r
                        selectedElement.getStyle( 'direction' ) || selectedElement.getAttribute( 'dir' );\r
 \r
-               return ( selectedElement == dir ) ?\r
-                       CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF;\r
+               editor.getCommand( 'bidirtl' ).setState( selectionDir == 'rtl' ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF );\r
+               editor.getCommand( 'bidiltr' ).setState( selectionDir == 'ltr' ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF );\r
+\r
+               var chromeRoot = editor.container.getChild( 1 );\r
+\r
+               if ( selectionDir != editor.lang.dir )\r
+                       chromeRoot.addClass( 'cke_mixed_dir_content' );\r
+               else\r
+                       chromeRoot.removeClass( 'cke_mixed_dir_content' );\r
        }\r
 \r
        function switchDir( element, dir, editor )\r