Index: /FCKeditor/trunk/editor/_source/classes/fckenterkey.js
===================================================================
--- /FCKeditor/trunk/editor/_source/classes/fckenterkey.js	(revision 472)
+++ /FCKeditor/trunk/editor/_source/classes/fckenterkey.js	(revision 473)
@@ -51,8 +51,6 @@
 	{
 		this.TabText = '' ;
-		
 		while ( tabSpaces-- > 0 )
 			this.TabText += '\xa0' ;
-
 		oKeystrokeHandler.SetKeystrokes( [ 9, 'Tab' ] ) ;
 	}
@@ -322,4 +320,21 @@
 	var oRange = new FCKDomRange( this.Window );
 	oRange.MoveToSelection() ;
+
+	// If the user pressed <tab> inside a table, we should give him the default behavior ( moving between cells )
+	// instead of giving him more non-breaking spaces. (Bug #973)
+	var node = oRange._Range.startContainer ;
+	while ( node )
+	{
+		if ( node.nodeType == 1 )
+		{
+			var tagName = node.tagName.toLowerCase() ;
+			if ( tagName == "tr" || tagName == "td" || tagName == "th" || tagName == "tbody" || tagName == "table" )
+				return false ;
+			else
+				break ;
+		}
+		node = node.parentNode ;
+	}
+
 	oRange.DeleteContents() ;
 	oRange.InsertNode( this.Window.document.createTextNode( this.TabText ) ) ;
Index: /FCKeditor/trunk/editor/_source/internals/fck.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fck.js	(revision 472)
+++ /FCKeditor/trunk/editor/_source/internals/fck.js	(revision 473)
@@ -776,5 +776,5 @@
 			case 'Tab' :
 				// Ignore it here, it's handled in fckenterkey.js.
-				return ( FCKConfig.TabSpaces == 0 ) ;
+				return false ;
 		}
 	}
