Index: /CKEditor/trunk/_source/plugins/list/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/list/plugin.js	(revision 6927)
+++ /CKEditor/trunk/_source/plugins/list/plugin.js	(revision 6928)
@@ -88,9 +88,12 @@
 				indentLevel = Math.max( listArray[ baseIndex ].indent, 0 ),
 				currentListItem = null,
-				itemDir,
+				orgDir,
 				paragraphName = ( paragraphMode == CKEDITOR.ENTER_P ? 'p' : 'div' );
 			while ( 1 )
 			{
 				var item = listArray[ currentIndex ];
+
+				orgDir = item.element.getDirection( 1 );
+
 				if ( item.indent == indentLevel )
 				{
@@ -102,4 +105,8 @@
 					}
 					currentListItem = rootNode.append( item.element.clone( 0, 1 ) );
+
+					if ( orgDir != rootNode.getDirection( 1 ) )
+						currentListItem.setAttribute( 'dir', orgDir );
+
 					for ( var i = 0 ; i < item.contents.length ; i++ )
 						currentListItem.append( item.contents[i].clone( 1, 1 ) );
@@ -109,6 +116,5 @@
 				{
 					// Maintain original direction (#6861).
-					var orgDir = item.element.getDirection( 1 ),
-						currDir = listArray[ currentIndex - 1 ].element.getDirection( 1 ),
+					var currDir = listArray[ currentIndex - 1 ].element.getDirection( 1 ),
 						listData = CKEDITOR.plugins.list.arrayToList( listArray, null, currentIndex, paragraphMode,
 						currDir != orgDir ? orgDir: null );
@@ -125,10 +131,5 @@
 				{
 					if ( listNodeNames[ item.grandparent.getName() ] )
-					{
 						currentListItem = item.element.clone( false, true );
-						itemDir = item.element.getDirection( 1 );
-						item.grandparent.getDirection( 1 ) != itemDir &&
-							currentListItem.setAttribute( 'dir', itemDir );
-					}
 					else
 					{
@@ -138,7 +139,4 @@
 							currentListItem = doc.createElement( paragraphName );
 							item.element.copyAttributes( currentListItem, { type:1, value:1 } );
-							itemDir = item.element.getDirection() || dir;
-							itemDir &&
-								currentListItem.setAttribute( 'dir', itemDir );
 
 							// There might be a case where there are no attributes in the element after all
@@ -151,4 +149,7 @@
 							currentListItem = new CKEDITOR.dom.documentFragment( doc );
 					}
+
+					if ( item.grandparent.getDirection( 1 ) != orgDir && currentListItem.type == CKEDITOR.NODE_ELEMENT )
+							currentListItem.setAttribute( 'dir', orgDir );
 
 					for ( i = 0 ; i < item.contents.length ; i++ )
