JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.6.5
[ckeditor.git] / _source / core / dom / walker.js
index a9c4eba..a4ed957 100644 (file)
@@ -413,8 +413,14 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
        {\r
                return function( node )\r
                {\r
-                       var isWhitespace = node && ( node.type == CKEDITOR.NODE_TEXT )\r
-                                                       && !CKEDITOR.tools.trim( node.getText() );\r
+                       var isWhitespace;\r
+                       if ( node && node.type == CKEDITOR.NODE_TEXT )\r
+                       {\r
+                               // whitespace, as well as the text cursor filler node we used in Webkit. (#9384)\r
+                               isWhitespace = !CKEDITOR.tools.trim( node.getText() ) ||\r
+                                       CKEDITOR.env.webkit && node.getText() == '\u200b';\r
+                       }\r
+\r
                        return !! ( isReject ^ isWhitespace );\r
                };\r
        };\r
@@ -428,13 +434,25 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
                var whitespace = CKEDITOR.dom.walker.whitespaces();\r
                return function( node )\r
                {\r
-                       // Nodes that take no spaces in wysiwyg:\r
-                       // 1. White-spaces but not including NBSP;\r
-                       // 2. Empty inline elements, e.g. <b></b> we're checking here\r
-                       // 'offsetHeight' instead of 'offsetWidth' for properly excluding\r
-                       // all sorts of empty paragraph, e.g. <br />.\r
-                       var isInvisible = whitespace( node ) || node.is && !node.$.offsetHeight;\r
-                       return !! ( isReject ^ isInvisible );\r
+                       var invisible;\r
+\r
+                       if ( whitespace( node ) )\r
+                               invisible = 1;\r
+                       else\r
+                       {\r
+                               // Visibility should be checked on element.\r
+                               if ( node.type == CKEDITOR.NODE_TEXT )\r
+                                       node = node.getParent();\r
+\r
+                               // Nodes that take no spaces in wysiwyg:\r
+                               // 1. White-spaces but not including NBSP;\r
+                               // 2. Empty inline elements, e.g. <b></b> we're checking here\r
+                               // 'offsetHeight' instead of 'offsetWidth' for properly excluding\r
+                               // all sorts of empty paragraph, e.g. <br />.\r
+                               invisible = !node.$.offsetHeight;\r
+                       }\r
+\r
+                       return !! ( isReject ^ invisible );\r
                };\r
        };\r
 \r