diff options
author | Kevin Barnes <krbarnes> | 2009-09-29 21:35:45 +0000 |
---|---|---|
committer | Kevin Barnes <krbarnes> | 2009-09-29 21:35:45 +0000 |
commit | 9d7d46409b6f1fdc54744bdad0dff70767a7f03b (patch) | |
tree | 8e4fc83bd1ecbad2c0842459bdd90cb8b2d19058 | |
parent | a5a51bcaab04ebde39e2967fe01c0175cf717dfa (diff) | |
download | eclipse.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
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); } |