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);
|
||||
}
|
||||
} else {
|
||||
// immediately hide the window
|
||||
CWrapper.NSWindow.orderOut(nsWindowPtr);
|
||||
// process the close
|
||||
CWrapper.NSWindow.close(nsWindowPtr);
|
||||
}
|
||||
} else {
|
||||
// otherwise, put it in a proper z-order
|
||||
|
@ -54,8 +54,26 @@ final class CWrapper {
|
||||
static native void orderFront(long window);
|
||||
static native void orderFrontRegardless(long window);
|
||||
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);
|
||||
|
||||
/**
|
||||
* 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 removeChildWindow(long parent, long child);
|
||||
|
||||
|
@ -173,6 +173,23 @@ JNF_COCOA_ENTER(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
|
||||
* Method: orderFrontRegardless
|
||||
|
Loading…
x
Reference in New Issue
Block a user