/*\r
-Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.\r
For licensing, see LICENSE.html or http://ckeditor.com/license\r
*/\r
\r
{\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
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