Fixed initial size of CTabFolder with vertical styling.
Change-Id: I3ac8ab8f9e9fdf444e64150c5c38f669cfe1c25d
Signed-off-by: Niraj Modi <niraj.modi@in.ibm.com>
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderLayout.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderLayout.java
index 5b849f9..a6e0016 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderLayout.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderLayout.java
@@ -26,17 +26,19 @@
CTabItem[] items = folder.items;
CTabFolderRenderer renderer = folder.renderer;
// preferred width of tab area to show all tabs
- int tabW = 0;
+ int tabW = 0, tabH = 0;
int selectedIndex = folder.selectedIndex;
if (selectedIndex == -1) selectedIndex = 0;
GC gc = new GC(folder);
for (int i = 0; i < items.length; i++) {
if (folder.single) {
tabW = Math.max(tabW, renderer.computeSize(i, SWT.SELECTED, gc, SWT.DEFAULT, SWT.DEFAULT).x);
+ tabH = Math.max(tabW, renderer.computeSize(i, SWT.SELECTED, gc, SWT.DEFAULT, SWT.DEFAULT).y);
} else {
int state = 0;
if (i == selectedIndex) state |= SWT.SELECTED;
tabW += renderer.computeSize(i, state, gc, SWT.DEFAULT, SWT.DEFAULT).x;
+ tabH += renderer.computeSize(i, state, gc, SWT.DEFAULT, SWT.DEFAULT).y;
}
}
@@ -91,9 +93,17 @@
controlH = Math.max (controlH, size.y);
}
}
-
int minWidth = Math.max(tabW, controlW + folder.marginWidth);
- int minHeight = (folder.minimized) ? 0 : controlH + wrapHeight;
+ int minHeight = 0;
+ switch (folder.tabPosition) {
+ case CTabFolder.LEFT:
+ case CTabFolder.RIGHT:
+ minHeight = (folder.minimized) ? 0 : Math.max(tabH, controlH + wrapHeight);
+ break;
+ case CTabFolder.BOTTOM:
+ default:
+ minHeight = (folder.minimized) ? 0 : controlH + wrapHeight;
+ }
if (minWidth == 0) minWidth = CTabFolder.DEFAULT_WIDTH;
if (minHeight == 0) minHeight = CTabFolder.DEFAULT_HEIGHT;