8041734: JFrame in full screen mode leaves empty workspace after close
Reviewed-by: azvegint, alexsch
This commit is contained in:
parent
fa2dc11080
commit
1f7d2ae35c
@ -567,7 +567,10 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
|
|||||||
CWrapper.NSWindow.makeKeyWindow(nsWindowPtr);
|
CWrapper.NSWindow.makeKeyWindow(nsWindowPtr);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// immediately hide the window
|
||||||
CWrapper.NSWindow.orderOut(nsWindowPtr);
|
CWrapper.NSWindow.orderOut(nsWindowPtr);
|
||||||
|
// process the close
|
||||||
|
CWrapper.NSWindow.close(nsWindowPtr);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// otherwise, put it in a proper z-order
|
// otherwise, put it in a proper z-order
|
||||||
|
@ -54,8 +54,26 @@ final class CWrapper {
|
|||||||
static native void orderFront(long window);
|
static native void orderFront(long window);
|
||||||
static native void orderFrontRegardless(long window);
|
static native void orderFrontRegardless(long window);
|
||||||
static native void orderWindow(long window, int ordered, long relativeTo);
|
static native void orderWindow(long window, int ordered, long relativeTo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the window from the screen.
|
||||||
|
*
|
||||||
|
* @param window the pointer of the NSWindow
|
||||||
|
*/
|
||||||
static native void orderOut(long window);
|
static native void orderOut(long window);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the window from the screen and releases it. According to
|
||||||
|
* documentation this method should be similar to {@link #orderOut},
|
||||||
|
* because we use ReleasedWhenClosed:NO, so the window shouldn't be
|
||||||
|
* released. But the close method works differently, for example it
|
||||||
|
* close the space if the window was in the full screen via
|
||||||
|
* {@link CPlatformWindow#toggleFullScreen()}.
|
||||||
|
*
|
||||||
|
* @param window the pointer of the NSWindow
|
||||||
|
*/
|
||||||
|
static native void close(long window);
|
||||||
|
|
||||||
static native void addChildWindow(long parent, long child, int ordered);
|
static native void addChildWindow(long parent, long child, int ordered);
|
||||||
static native void removeChildWindow(long parent, long child);
|
static native void removeChildWindow(long parent, long child);
|
||||||
|
|
||||||
|
@ -173,6 +173,23 @@ JNF_COCOA_ENTER(env);
|
|||||||
JNF_COCOA_EXIT(env);
|
JNF_COCOA_EXIT(env);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: sun_lwawt_macosx_CWrapper$NSWindow
|
||||||
|
* Method: close
|
||||||
|
* Signature: (J)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL
|
||||||
|
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_close
|
||||||
|
(JNIEnv *env, jclass cls, jlong windowPtr)
|
||||||
|
{
|
||||||
|
JNF_COCOA_ENTER(env);
|
||||||
|
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||||
|
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||||
|
[window close];
|
||||||
|
}];
|
||||||
|
JNF_COCOA_EXIT(env);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: sun_lwawt_macosx_CWrapper$NSWindow
|
* Class: sun_lwawt_macosx_CWrapper$NSWindow
|
||||||
* Method: orderFrontRegardless
|
* Method: orderFrontRegardless
|
||||||
|
Loading…
x
Reference in New Issue
Block a user