src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java
Print this page
*** 44,54 ****
import com.apple.laf.*;
import com.apple.laf.ClientPropertyApplicator.Property;
import com.sun.awt.AWTUtilities;
! public class CPlatformWindow extends CFRetainedResource implements PlatformWindow {
private native long nativeCreateNSWindow(long nsViewPtr, long styleBits, double x, double y, double w, double h);
private static native void nativeSetNSWindowStyleBits(long nsWindowPtr, int mask, int data);
private static native void nativeSetNSWindowMenuBar(long nsWindowPtr, long menuBarPtr);
private static native Insets nativeGetNSWindowInsets(long nsWindowPtr);
private static native void nativeSetNSWindowBounds(long nsWindowPtr, double x, double y, double w, double h);
--- 44,54 ----
import com.apple.laf.*;
import com.apple.laf.ClientPropertyApplicator.Property;
import com.sun.awt.AWTUtilities;
! public final class CPlatformWindow extends CFRetainedResource implements PlatformWindow {
private native long nativeCreateNSWindow(long nsViewPtr, long styleBits, double x, double y, double w, double h);
private static native void nativeSetNSWindowStyleBits(long nsWindowPtr, int mask, int data);
private static native void nativeSetNSWindowMenuBar(long nsWindowPtr, long menuBarPtr);
private static native Insets nativeGetNSWindowInsets(long nsWindowPtr);
private static native void nativeSetNSWindowBounds(long nsWindowPtr, double x, double y, double w, double h);
*** 197,207 ****
// Bounds of the native widget but in the Java coordinate system.
// In order to keep it up-to-date we will update them on
// 1) setting native bounds via nativeSetBounds() call
// 2) getting notification from the native level via deliverMoveResizeEvent()
! private Rectangle nativeBounds;
private volatile boolean isFullScreenMode = false;
private Window target;
private LWWindowPeer peer;
private CPlatformView contentView;
--- 197,207 ----
// Bounds of the native widget but in the Java coordinate system.
// In order to keep it up-to-date we will update them on
// 1) setting native bounds via nativeSetBounds() call
// 2) getting notification from the native level via deliverMoveResizeEvent()
! private Rectangle nativeBounds = new Rectangle(0, 0, 0, 0);
private volatile boolean isFullScreenMode = false;
private Window target;
private LWWindowPeer peer;
private CPlatformView contentView;
*** 867,876 ****
--- 867,882 ----
if (surfaceData instanceof CGLSurfaceData) {
((CGLSurfaceData)surfaceData).validate();
}
}
+ private void flushBuffers() {
+ if (isVisible() && !nativeBounds.isEmpty()) {
+ LWCToolkit.getLWCToolkit().flushPendingEventsOnAppkit(target);
+ }
+ }
+
/*************************************************************
* Callbacks from the AWTWindow and AWTView objc classes.
*************************************************************/
private void deliverWindowFocusEvent(boolean gained){
// Fix for 7150349: ingore "gained" notifications when the app is inactive.
*** 884,897 ****
private void deliverMoveResizeEvent(int x, int y, int width, int height) {
// when the content view enters the full-screen mode, the native
// move/resize notifications contain a bounds smaller than
// the whole screen and therefore we ignore the native notifications
// and the content view itself creates correct synthetic notifications
! if (isFullScreenMode) return;
nativeBounds = new Rectangle(x, y, width, height);
peer.notifyReshape(x, y, width, height);
//TODO validateSurface already called from notifyReshape
validateSurface();
}
private void deliverWindowClosingEvent() {
--- 890,909 ----
private void deliverMoveResizeEvent(int x, int y, int width, int height) {
// when the content view enters the full-screen mode, the native
// move/resize notifications contain a bounds smaller than
// the whole screen and therefore we ignore the native notifications
// and the content view itself creates correct synthetic notifications
! if (isFullScreenMode) {
! return;
! }
+ final Rectangle oldB = nativeBounds;
nativeBounds = new Rectangle(x, y, width, height);
peer.notifyReshape(x, y, width, height);
+ if (!oldB.getSize().equals(nativeBounds.getSize()) ) {
+ flushBuffers();
+ }
//TODO validateSurface already called from notifyReshape
validateSurface();
}
private void deliverWindowClosingEvent() {