Index: /FCKeditor/branches/features/div_container/editor/_source/internals/fck_contextmenu.js
===================================================================
--- /FCKeditor/branches/features/div_container/editor/_source/internals/fck_contextmenu.js	(revision 2197)
+++ /FCKeditor/branches/features/div_container/editor/_source/internals/fck_contextmenu.js	(revision 2198)
@@ -298,6 +298,40 @@
 			AddItems : function( menu, tag, tagName )
 			{
-				var path = new FCKElementPath( FCKSelection.GetSelectedElement() || FCKSelection.GetParentElement() ) ;
-				if ( path.BlockLimit && path.BlockLimit.nodeName.IEquals( 'div' ) )
+				var currentBlocks = [] ;
+				var range = new FCKDomRange( FCK.EditorWindow ) ;
+				range.MoveToSelection() ;
+
+				var startNode = range.StartNode ;
+				var endNode = range.EndNode ;
+				var elementMarkers = {} ;
+
+				var startPath = new FCKElementPath( startNode ) ;
+				if ( startPath.BlockLimit && startPath.BlockLimit.nodeName.IEquals( 'div' ) )
+					startNode = startPath.BlockLimit ;
+				var currentNode = startNode ;
+
+				do
+				{
+					if ( currentNode.nodeName.IEquals( 'div' ) && currentNode.firstChild &&
+							FCKListsLib.BlockElements[ currentNode.firstChild.nodeName.toLowerCase() ] )
+					{
+						currentBlocks.push( currentNode ) ;
+						if ( currentNode.parentNode.nodeName.IEquals( 'div' ) )
+							FCKDomTools.SetElementMarker( elementMarkers, currentNode.parentNode,
+									'_fckignorethisnode', true ) ;
+					}
+				}
+				while ( ( currentNode = FCKDomTools.GetNextSourceElement( currentNode ) ) && currentNode != endNode
+						&& currentNode != endNode.parentNode ) ;
+
+				for ( var i = currentBlocks.length - 1 ; i >= 0 ; i-- )
+				{
+					if ( currentBlocks[i]['_fckignorethisnode'] )
+						currentBlocks.splice( i, 1 ) ;
+				}
+
+				FCKDomTools.ClearAllMarkers( elementMarkers ) ;
+
+				if ( currentBlocks.length > 0 )
 				{
 					menu.AddSeparator() ;
Index: /FCKeditor/branches/features/div_container/editor/dialog/fck_div.html
===================================================================
--- /FCKeditor/branches/features/div_container/editor/dialog/fck_div.html	(revision 2197)
+++ /FCKeditor/branches/features/div_container/editor/dialog/fck_div.html	(revision 2198)
@@ -39,4 +39,5 @@
 var FCKDomTools = oEditor.FCKDomTools ;
 var FCKDomRangeIterator = oEditor.FCKDomRangeIterator ;
+var FCKListsLib = oEditor.FCKListsLib ;
 var AlwaysCreate = dialog.Args().CustomValue ;
 
@@ -68,15 +69,20 @@
 	var startNode = range.StartNode ;
 	var endNode = range.EndNode ;
+	var elementMarkers = {} ;
+
+	var startPath = new FCKElementPath( startNode ) ;
+	if ( startPath.BlockLimit && startPath.BlockLimit.nodeName.IEquals( 'div' ) )
+		startNode = startPath.BlockLimit ;
 	var currentNode = startNode ;
-	var elementMarkers = {} ;
 
 	do
 	{
 		if ( currentNode.nodeName.IEquals( 'div' ) && currentNode.firstChild &&
-				oEditor.FCKListsLib.BlockElements[ currentNode.firstChild.nodeName.toLowerCase() ] )
+				FCKListsLib.BlockElements[ currentNode.firstChild.nodeName.toLowerCase() ] )
 		{
 			CurrentContainers.push( currentNode ) ;
 			if ( currentNode.parentNode.nodeName.IEquals( 'div' ) )
-				FCKDomTools.SetElementMarker( elementMarkers, currentNode, '_fckignorethisnode', true ) ;
+				FCKDomTools.SetElementMarker( elementMarkers, currentNode.parentNode,
+						'_fckignorethisnode', true ) ;
 		}
 	}
@@ -89,4 +95,6 @@
 			CurrentContainers.splice( i, 1 ) ;
 	}
+
+	FCKDomTools.ClearAllMarkers( elementMarkers ) ;
 }
 
