Index: /CKEditor/branches/versions/3.1.x/_source/core/dom/range.js
===================================================================
--- /CKEditor/branches/versions/3.1.x/_source/core/dom/range.js	(revision 4644)
+++ /CKEditor/branches/versions/3.1.x/_source/core/dom/range.js	(revision 4645)
@@ -1579,4 +1579,5 @@
 			return walker.checkForward();
 		},
+
 		/**
 		 * Moves the range boundaries to the first/end editing point inside an
@@ -1632,4 +1633,23 @@
 		},
 
+		/**
+		 * Get the single node enclosed within the range if there's one.
+		 */
+		getEnclosedNode : function()
+		{
+			var walkerRange = this.clone(),
+				walker = new CKEDITOR.dom.walker( walkerRange ),
+				isNotBookmarks = CKEDITOR.dom.walker.bookmark( true ),
+				isNotWhitespaces = CKEDITOR.dom.walker.whitespaces( true ),
+				evaluator = function( node )
+				{
+					return isNotWhitespaces( node ) && isNotBookmarks( node );
+				};
+			walkerRange.evaluator = evaluator;
+			var node = walker.next();
+			walker.reset();
+			return node && node.equals( walker.previous() ) ? node : null;
+		},
+
 		getTouchedStartNode : function()
 		{
