summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Barnes <krbarnes>2009-09-29 21:35:45 +0000
committerKevin Barnes <krbarnes>2009-09-29 21:35:45 +0000
commit9d7d46409b6f1fdc54744bdad0dff70767a7f03b (patch)
tree8e4fc83bd1ecbad2c0842459bdd90cb8b2d19058
parenta5a51bcaab04ebde39e2967fe01c0175cf717dfa (diff)
downloadeclipse.platform.swt-9d7d46409b6f1fdc54744bdad0dff70767a7f03b.tar.gz
eclipse.platform.swt-9d7d46409b6f1fdc54744bdad0dff70767a7f03b.tar.xz
eclipse.platform.swt-9d7d46409b6f1fdc54744bdad0dff70767a7f03b.zip
290774 - [cocoa] Shells do not generate SWT.Iconify and SWT.Deiconify events
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/AppKitFull.bridgesupport.extras6
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/OS.java2
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java6
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Shell.java18
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java6
5 files changed, 38 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/AppKitFull.bridgesupport.extras b/bundles/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/AppKitFull.bridgesupport.extras
index 2944841773..0c54e835b8 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/AppKitFull.bridgesupport.extras
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/AppKitFull.bridgesupport.extras
@@ -4800,6 +4800,12 @@
<method selector="windowDidBecomeKey:" swt_gen="true">
<arg name="notification" swt_gen="true"></arg>
</method>
+ <method selector="windowDidDeminiaturize:" swt_gen="true">
+ <arg name="notification" swt_gen="true"></arg>
+ </method>
+ <method selector="windowDidMiniaturize:" swt_gen="true">
+ <arg name="notification" swt_gen="true"></arg>
+ </method>
<method selector="windowDidMove:" swt_gen="true">
<arg name="notification" swt_gen="true"></arg>
</method>
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/OS.java b/bundles/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/OS.java
index c49a4218e3..c4ac687560 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/OS.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/OS.java
@@ -1846,6 +1846,8 @@ public static final int /*long*/ sel_width = sel_registerName("width");
public static final int /*long*/ sel_window = sel_registerName("window");
public static final int /*long*/ sel_windowBackgroundColor = sel_registerName("windowBackgroundColor");
public static final int /*long*/ sel_windowDidBecomeKey_ = sel_registerName("windowDidBecomeKey:");
+public static final int /*long*/ sel_windowDidDeminiaturize_ = sel_registerName("windowDidDeminiaturize:");
+public static final int /*long*/ sel_windowDidMiniaturize_ = sel_registerName("windowDidMiniaturize:");
public static final int /*long*/ sel_windowDidMove_ = sel_registerName("windowDidMove:");
public static final int /*long*/ sel_windowDidResignKey_ = sel_registerName("windowDidResignKey:");
public static final int /*long*/ sel_windowDidResize_ = sel_registerName("windowDidResize:");
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java
index 1f271b9546..a072914711 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java
@@ -2487,6 +2487,8 @@ void initClasses () {
OS.class_addMethod(cls, OS.sel_windowDidBecomeKey_, proc3, "@:@");
OS.class_addMethod(cls, OS.sel_timerProc_, proc3, "@:@");
OS.class_addMethod(cls, OS.sel_systemSettingsChanged_, proc3, "@:@");
+ OS.class_addMethod(cls, OS.sel_windowDidMiniaturize_, proc3, "@:@");
+ OS.class_addMethod(cls, OS.sel_windowDidDeminiaturize_, proc3, "@:@");
OS.objc_registerClassPair(cls);
}
@@ -4830,6 +4832,10 @@ static int /*long*/ windowProc(int /*long*/ id, int /*long*/ sel, int /*long*/ a
NSRect rect = new NSRect();
OS.memmove(rect, arg0, NSRect.sizeof);
widget.drawBackgroundInClipRect(id, sel, rect);
+ } else if (sel == OS.sel_windowDidMiniaturize_) {
+ widget.windowDidMiniturize(id, sel, arg0);
+ } else if (sel == OS.sel_windowDidDeminiaturize_) {
+ widget.windowDidDeminiturize(id, sel, arg0);
}
return 0;
}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Shell.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Shell.java
index 97af79aca5..d065d7b718 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Shell.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Shell.java
@@ -1511,6 +1511,7 @@ public void setMinimized (boolean minimized) {
checkWidget();
super.setMinimized (minimized);
if (window == null) return;
+ if (!getVisible()) return;
if (minimized) {
window.miniaturize (null);
} else {
@@ -1695,6 +1696,13 @@ void setWindowVisible (boolean visible, boolean key) {
} else {
window.orderFront (null);
}
+ if (minimized != window.isMiniaturized()) {
+ if (minimized) {
+ window.miniaturize (null);
+ } else {
+ window.deminiaturize (null);
+ }
+ }
}
}
}
@@ -1850,6 +1858,16 @@ void windowDidBecomeKey(int /*long*/ id, int /*long*/ sel, int /*long*/ notifica
}
}
+void windowDidDeminiturize(int /*long*/ id, int /*long*/ sel, int /*long*/ notification) {
+ minimized = false;
+ sendEvent(SWT.Deiconify);
+}
+
+void windowDidMiniturize(int /*long*/ id, int /*long*/ sel, int /*long*/ notification) {
+ minimized = true;
+ sendEvent(SWT.Iconify);
+}
+
void windowDidMove(int /*long*/ id, int /*long*/ sel, int /*long*/ notification) {
moved = true;
sendEvent(SWT.Move);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java
index ac55e05e67..847f663406 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java
@@ -1779,6 +1779,12 @@ void windowDidResignKey(int /*long*/ id, int /*long*/ sel, int /*long*/ notifica
void windowDidBecomeKey(int /*long*/ id, int /*long*/ sel, int /*long*/ notification) {
}
+void windowDidMiniturize(int /*long*/ id, int /*long*/ sel, int /*long*/ notification) {
+}
+
+void windowDidDeminiturize(int /*long*/ id, int /*long*/ sel, int /*long*/ notification) {
+}
+
void windowSendEvent(int /*long*/ id, int /*long*/ sel, int /*long*/ event) {
callSuper(id, sel, event);
}