Index: /CKEditor/trunk/_source/core/config.js
===================================================================
--- /CKEditor/trunk/_source/core/config.js	(revision 3062)
+++ /CKEditor/trunk/_source/core/config.js	(revision 3063)
@@ -148,5 +148,5 @@
 	 */
 
-	plugins : 'basicstyles,button,elementspath,horizontalrule,htmldataprocessor,keystrokes,newpage,pagebreak,preview,removeformat,smiley,indent,link,list,sourcearea,table,specialchar,tab,toolbar,wysiwygarea',
+	plugins : 'basicstyles,button,elementspath,horizontalrule,htmldataprocessor,keystrokes,newpage,pagebreak,preview,removeformat,smiley,indent,link,list,justify,sourcearea,table,specialchar,tab,toolbar,wysiwygarea',
 
 	/**
Index: /CKEditor/trunk/_source/lang/en.js
===================================================================
--- /CKEditor/trunk/_source/lang/en.js	(revision 3062)
+++ /CKEditor/trunk/_source/lang/en.js	(revision 3063)
@@ -380,4 +380,12 @@
 	bulletedlist : 'Insert/Remove Bulleted List',
 	indent : 'Increase Indent',
-	outdent : 'Decrease Indent'
+	outdent : 'Decrease Indent',
+
+	justify :
+	{
+		left : 'Left Justify',
+		center : 'Center Justify',
+		right : 'Right Justify',
+		block : 'Block Justify'
+	}
 };
Index: /CKEditor/trunk/_source/plugins/indent/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/indent/plugin.js	(revision 3062)
+++ /CKEditor/trunk/_source/plugins/indent/plugin.js	(revision 3063)
@@ -250,4 +250,5 @@
 
 			editor.focus();
+			editor.forceNextSelectionCheck();
 			selection.selectBookmarks( bookmarks );
 		}
Index: /CKEditor/trunk/_source/plugins/selection/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/selection/plugin.js	(revision 3062)
+++ /CKEditor/trunk/_source/plugins/selection/plugin.js	(revision 3063)
@@ -141,6 +141,10 @@
 		}
 
-		retval.onSelectionSet = CKEDITOR.tools.bind( checkSelectionChangeTimeout, this );
 		return retval;
+	};
+
+	CKEDITOR.editor.prototype.forceNextSelectionCheck = function()
+	{
+		delete this._.selectionPreviousPath;
 	};
 
@@ -580,5 +584,4 @@
 
 					range.select();
-					this.onSelectionSet && this.onSelectionSet();
 				}
 			:
@@ -593,5 +596,4 @@
 					sel.removeAllRanges();
 					sel.addRange( range );
-					this.onSelectionSet && this.onSelectionSet();
 				},
 
@@ -604,5 +606,4 @@
 					if ( ranges[ 0 ] )
 						ranges[ 0 ].select();
-					this.onSelectionSet && this.onSelectionSet();
 				}
 			:
@@ -622,5 +623,4 @@
 						sel.addRange( nativeRange );
 					}
-					this.onSelectionSet && this.onSelectionSet();
 				},
 
Index: /CKEditor/trunk/_source/plugins/toolbar/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/toolbar/plugin.js	(revision 3062)
+++ /CKEditor/trunk/_source/plugins/toolbar/plugin.js	(revision 3063)
@@ -212,4 +212,5 @@
 		'NumberedList', 'BulletedList', '-',
 		'Outdent', 'Indent', '-',
+		'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-',
 		'Subscript', 'Superscript', '-',
 		'SelectAll', 'RemoveFormat', '-',
Index: /CKEditor/trunk/_source/skins/default/toolbar.css
===================================================================
--- /CKEditor/trunk/_source/skins/default/toolbar.css	(revision 3062)
+++ /CKEditor/trunk/_source/skins/default/toolbar.css	(revision 3063)
@@ -331,2 +331,22 @@
 	background-position: 0 -448px;
 }
+
+.cke_skin_default a.cke_button_justifyleft .cke_icon
+{
+	background-position: 0 -464px;
+}
+
+.cke_skin_default a.cke_button_justifycenter .cke_icon
+{
+	background-position: 0 -480px;
+}
+
+.cke_skin_default a.cke_button_justifyright .cke_icon
+{
+	background-position: 0 -496px;
+}
+
+.cke_skin_default a.cke_button_justifyblock .cke_icon
+{
+	background-position: 0 -512px;
+}
