Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 5953)
+++ /CKEditor/trunk/CHANGES.html	(revision 5954)
@@ -71,4 +71,5 @@
 		<li><a href="http://dev.ckeditor.com/ticket/5646">#5646</a> : Parser incorreclty removes inline element when there's only one comment node enclosed.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6189">#6189</a> : Minor code size reduction.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6100">#6100</a> : BIDI: when we change Table language direction indentation of text in Table cells is not applied correctly.</li>
 		<li>Updated the following language files:<ul>
 			<li><a href="http://dev.ckeditor.com/ticket/6427">#6427</a> : Ukrainian;</li>
Index: /CKEditor/trunk/_source/plugins/bidi/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/bidi/plugin.js	(revision 5953)
+++ /CKEditor/trunk/_source/plugins/bidi/plugin.js	(revision 5954)
@@ -68,33 +68,5 @@
 		var dirAfter = element.getComputedStyle( 'direction' );
 		if ( dirAfter != dirBefore )
-		{
-			var range = new CKEDITOR.dom.range( element.getDocument() );
-			range.setStartBefore( element );
-			range.setEndAfter( element );
-
-			var walker = new CKEDITOR.dom.walker( range );
-
-			var node;
-			while ( ( node = walker.next() ) )
-			{
-				if ( node.type == CKEDITOR.NODE_ELEMENT )
-				{
-					// A child with dir defined is to be ignored.
-					if ( !node.equals( element ) && node.hasAttribute( 'dir' ) )
-					{
-						range.setStartAfter( node );
-						walker = new CKEDITOR.dom.walker( range );
-						continue;
-					}
-
-					// Switch the margins.
-					var marginLeft = node.getStyle( 'margin-right' ),
-						marginRight = node.getStyle( 'margin-left' );
-
-					marginLeft ? node.setStyle( 'margin-left', marginLeft ) : node.removeStyle( 'margin-left' );
-					marginRight ? node.setStyle( 'margin-right', marginRight ) : node.removeStyle( 'margin-right' );
-				}
-			}
-		}
+			editor.fire( 'dirChanged', element );
 
 		editor.forceNextSelectionCheck();
Index: /CKEditor/trunk/_source/plugins/dialogadvtab/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/dialogadvtab/plugin.js	(revision 5953)
+++ /CKEditor/trunk/_source/plugins/dialogadvtab/plugin.js	(revision 5954)
@@ -36,4 +36,12 @@
 		var attrName = this.att,
 			value = this.getValue();
+
+		// Broadcast Lang Dir change
+		if ( attrName == 'dir' )
+		{
+			var dir = element.getAttribute( attrName, value );
+			if ( dir != value )
+				this._.dialog._.editor.fire( 'dirChanged', element );
+		}
 
 		if ( value )
Index: /CKEditor/trunk/_source/plugins/indent/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/indent/plugin.js	(revision 5953)
+++ /CKEditor/trunk/_source/plugins/indent/plugin.js	(revision 5954)
@@ -386,4 +386,36 @@
 					"}" );
 			}
+
+			// Register dirChanged listener.
+			editor.on( 'dirChanged', function( e )
+			{
+				var range = new CKEDITOR.dom.range( editor.document );
+				range.setStartBefore( e.data );
+				range.setEndAfter( e.data );
+				
+				var walker = new CKEDITOR.dom.walker( range ),
+					node;
+
+				while ( ( node = walker.next() ) )
+				{
+					if ( node.type == CKEDITOR.NODE_ELEMENT )
+					{
+						// A child with dir defined is to be ignored.
+						if ( !node.equals( e.data ) && node.hasAttribute( 'dir' ) )
+						{
+							range.setStartAfter( node );
+							walker = new CKEDITOR.dom.walker( range );
+							continue;
+						}
+
+						// Switch the margins.
+						var marginLeft = node.getStyle( 'margin-right' ),
+							marginRight = node.getStyle( 'margin-left' );
+
+						marginLeft ? node.setStyle( 'margin-left', marginLeft ) : node.removeStyle( 'margin-left' );
+						marginRight ? node.setStyle( 'margin-right', marginRight ) : node.removeStyle( 'margin-right' );
+					}
+				}
+			});
 		},
 
