double click maximizes
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder2.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder2.java
index c7d65f1..6b5075e 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder2.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder2.java
@@ -1702,10 +1702,38 @@
 	}
 	return false;
 }
-void onMouseDoubleClick(Event event) { 
+void onMouseDoubleClick(Event event) {
+	int x = event.x, y = event.y;
+	if (minRect.contains(x, y)) return;
+	if (maxRect.contains(x, y)) return;
+	if (chevronRect.contains(x, y)) return;
+	
+	if (showMax) {
+		CTabFolderEvent e = new CTabFolderEvent(this);
+		e.widget = this;
+		e.time = event.time;
+		e.doit = true;
+		boolean restore = maximized;
+		for (int i = 0; i < minmaxListeners.length; i++) {
+			if (restore) {
+				minmaxListeners[i].restore(e);
+			} else {
+				minmaxListeners[i].maximize(e);
+			}
+		}
+		if (e.doit) {
+			maximized = !restore;
+			redraw(maxRect.x, maxRect.y, maxRect.width, maxRect.height, false);
+			update();
+		}
+	}
+		
+	
 	Event e = new Event();
 	e.item = getItem(new Point(event.x, event.y));
-	notifyListeners(SWT.DefaultSelection, e);
+	if (e.item != null) {
+		notifyListeners(SWT.DefaultSelection, e);
+	}
 }
 void onMouseHover(Event event) {
 	if (tipShowing) return;