diff --git a/bundles/org.eclipse.compare/buildnotes_compare.html b/bundles/org.eclipse.compare/buildnotes_compare.html
index b3b7f94..8c9eace 100644
--- a/bundles/org.eclipse.compare/buildnotes_compare.html
+++ b/bundles/org.eclipse.compare/buildnotes_compare.html
@@ -17,6 +17,7 @@
 Problem reports fixed</h2>
 <a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5323">#5323</a>: Compare does not handle correctly conflicts at same location<br>
 <a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=26035">#26035</a>: Local history uses wrong character encoding<br>
+<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=15654">#15654</a>: Can't maximize Compare with Local History window<br>
 
 
 <h1>
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java
index 8fa8ba3..1cf21b1 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java
@@ -674,8 +674,10 @@
  	/* (non Javadoc)
  	 * Creates SWT control tree.
  	 */
-	protected synchronized Control createDialogArea(Composite parent) {
+	protected synchronized Control createDialogArea(Composite parent2) {
 		
+		Composite parent= (Composite) super.createDialogArea(parent2);
+
 		getShell().setText(Utilities.getString(fBundle, "title")); //$NON-NLS-1$
 		
 		Splitter vsplitter= new Splitter(parent,  SWT.VERTICAL);
@@ -789,7 +791,7 @@
 		};
 		vsplitter.setWeights(new int[] { 30, 70 });
 				
-		return vsplitter;
+		return parent;
 	}	
 	
 	/* (non-Javadoc)
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryDialog.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryDialog.java
index e72b9b8..b21dd11 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryDialog.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryDialog.java
@@ -168,8 +168,10 @@
 		return selected;
 	}
 				
-	protected synchronized Control createDialogArea(Composite parent) {
+	protected synchronized Control createDialogArea(Composite parent2) {
 		
+		Composite parent= (Composite) super.createDialogArea(parent2);
+
 		getShell().setText(Utilities.getString(fBundle, "title")); //$NON-NLS-1$
 		
 		org.eclipse.compare.Splitter vsplitter= new org.eclipse.compare.Splitter(parent,  SWT.VERTICAL);
@@ -188,7 +190,7 @@
 		);
 		
 		// we need two panes: the left for the elements, the right one for the editions
-		org.eclipse.compare.Splitter hsplitter= new org.eclipse.compare.Splitter(vsplitter,  SWT.HORIZONTAL);
+		Splitter hsplitter= new Splitter(vsplitter,  SWT.HORIZONTAL);
 		
 		Composite c= new Composite(hsplitter, SWT.NONE);
 		GridLayout layout= new GridLayout();
@@ -257,7 +259,7 @@
 		};
 		vsplitter.setWeights(new int[] { 30, 70 });
 				
-		return vsplitter;
+		return parent;
 	}
 	
 	/**
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java
index a1f95a0..521c809 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java
@@ -64,8 +64,10 @@
 	/* (non-Javadoc)
 	 * Method declared on Dialog.
 	 */
-	protected Control createDialogArea(Composite parent) {
+	protected Control createDialogArea(Composite parent2) {
 						
+		Composite parent= (Composite) super.createDialogArea(parent2);
+
 		Control c= fCompareEditorInput.createContents(parent);
 		c.setLayoutData(new GridData(GridData.FILL_BOTH));
 		
@@ -73,7 +75,7 @@
 		shell.setText(fCompareEditorInput.getTitle());
 		shell.setImage(fCompareEditorInput.getTitleImage());
 
-		return c;
+		return parent;
 	}
 		
 	/* (non-Javadoc)
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResizableDialog.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResizableDialog.java
index 26e5fe3..7832932 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResizableDialog.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResizableDialog.java
@@ -31,7 +31,7 @@
 
 	public ResizableDialog(Shell parent, ResourceBundle bundle) {
 		super(parent);
-		setShellStyle(getShellStyle() | SWT.RESIZE);
+		setShellStyle(getShellStyle() | SWT.RESIZE | SWT.MAX);
 		
 		fBundle= bundle;
 		
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html
index b3b7f94..8c9eace 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html
@@ -17,6 +17,7 @@
 Problem reports fixed</h2>
 <a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5323">#5323</a>: Compare does not handle correctly conflicts at same location<br>
 <a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=26035">#26035</a>: Local history uses wrong character encoding<br>
+<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=15654">#15654</a>: Can't maximize Compare with Local History window<br>
 
 
 <h1>
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java
index 8fa8ba3..1cf21b1 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java
@@ -674,8 +674,10 @@
  	/* (non Javadoc)
  	 * Creates SWT control tree.
  	 */
-	protected synchronized Control createDialogArea(Composite parent) {
+	protected synchronized Control createDialogArea(Composite parent2) {
 		
+		Composite parent= (Composite) super.createDialogArea(parent2);
+
 		getShell().setText(Utilities.getString(fBundle, "title")); //$NON-NLS-1$
 		
 		Splitter vsplitter= new Splitter(parent,  SWT.VERTICAL);
@@ -789,7 +791,7 @@
 		};
 		vsplitter.setWeights(new int[] { 30, 70 });
 				
-		return vsplitter;
+		return parent;
 	}	
 	
 	/* (non-Javadoc)
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryDialog.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryDialog.java
index e72b9b8..b21dd11 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryDialog.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryDialog.java
@@ -168,8 +168,10 @@
 		return selected;
 	}
 				
-	protected synchronized Control createDialogArea(Composite parent) {
+	protected synchronized Control createDialogArea(Composite parent2) {
 		
+		Composite parent= (Composite) super.createDialogArea(parent2);
+
 		getShell().setText(Utilities.getString(fBundle, "title")); //$NON-NLS-1$
 		
 		org.eclipse.compare.Splitter vsplitter= new org.eclipse.compare.Splitter(parent,  SWT.VERTICAL);
@@ -188,7 +190,7 @@
 		);
 		
 		// we need two panes: the left for the elements, the right one for the editions
-		org.eclipse.compare.Splitter hsplitter= new org.eclipse.compare.Splitter(vsplitter,  SWT.HORIZONTAL);
+		Splitter hsplitter= new Splitter(vsplitter,  SWT.HORIZONTAL);
 		
 		Composite c= new Composite(hsplitter, SWT.NONE);
 		GridLayout layout= new GridLayout();
@@ -257,7 +259,7 @@
 		};
 		vsplitter.setWeights(new int[] { 30, 70 });
 				
-		return vsplitter;
+		return parent;
 	}
 	
 	/**
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java
index a1f95a0..521c809 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java
@@ -64,8 +64,10 @@
 	/* (non-Javadoc)
 	 * Method declared on Dialog.
 	 */
-	protected Control createDialogArea(Composite parent) {
+	protected Control createDialogArea(Composite parent2) {
 						
+		Composite parent= (Composite) super.createDialogArea(parent2);
+
 		Control c= fCompareEditorInput.createContents(parent);
 		c.setLayoutData(new GridData(GridData.FILL_BOTH));
 		
@@ -73,7 +75,7 @@
 		shell.setText(fCompareEditorInput.getTitle());
 		shell.setImage(fCompareEditorInput.getTitleImage());
 
-		return c;
+		return parent;
 	}
 		
 	/* (non-Javadoc)
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResizableDialog.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResizableDialog.java
index 26e5fe3..7832932 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResizableDialog.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResizableDialog.java
@@ -31,7 +31,7 @@
 
 	public ResizableDialog(Shell parent, ResourceBundle bundle) {
 		super(parent);
-		setShellStyle(getShellStyle() | SWT.RESIZE);
+		setShellStyle(getShellStyle() | SWT.RESIZE | SWT.MAX);
 		
 		fBundle= bundle;
 		
