< prev index next >
src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java
Print this page
@@ -376,11 +376,11 @@
if (this.undecorated) styleBits = SET(styleBits, DECORATED, false);
}
// Either java.awt.Frame or java.awt.Dialog can be resizable, however java.awt.Window is never resizable
{
- final boolean resizable = isFrame ? ((Frame)target).isResizable() : (isDialog ? ((Dialog)target).isResizable() : false);
+ final boolean resizable = (!isNativelyFocusableWindow() || !isTargetResizable()) ? false : true;
styleBits = SET(styleBits, RESIZABLE, resizable);
if (!resizable) {
styleBits = SET(styleBits, ZOOMABLE, false);
}
}
@@ -480,10 +480,14 @@
peer.setTextured(IS(TEXTURED, styleBits));
return styleBits;
}
+ private boolean isTargetResizable() {
+ return (target instanceof Frame) ? ((Frame)target).isResizable() : ((target instanceof Dialog) ? ((Dialog)target).isResizable() : false);
+ }
+
// this is the counter-point to -[CWindow _nativeSetStyleBit:]
private void setStyleBits(final int mask, final boolean value) {
execute(ptr -> nativeSetNSWindowStyleBits(ptr, mask, value ? mask : 0));
}
@@ -676,12 +680,11 @@
// Manage the extended state when showing
if (visible) {
/* Frame or Dialog should be set property WINDOW_FULLSCREENABLE to true if the
Frame or Dialog is resizable.
**/
- final boolean resizable = (target instanceof Frame) ? ((Frame)target).isResizable() :
- ((target instanceof Dialog) ? ((Dialog)target).isResizable() : false);
+ final boolean resizable = isTargetResizable();
if (resizable) {
setCanFullscreen(true);
}
// Apply the extended state as expected in shared code
@@ -812,13 +815,14 @@
}
}
@Override
public void setResizable(final boolean resizable) {
- setCanFullscreen(resizable);
- setStyleBits(RESIZABLE, resizable);
- setStyleBits(ZOOMABLE, resizable);
+ final boolean windowResizable = (!isNativelyFocusableWindow() || !resizable) ? false : true;
+ setCanFullscreen(windowResizable);
+ setStyleBits(RESIZABLE, windowResizable);
+ setStyleBits(ZOOMABLE, windowResizable);
}
@Override
public void setSizeConstraints(int minW, int minH, int maxW, int maxH) {
execute(ptr -> nativeSetNSWindowMinMax(ptr, minW, minH, maxW, maxH));
@@ -857,11 +861,12 @@
}
@Override
public void updateFocusableWindowState() {
final boolean isFocusable = isNativelyFocusableWindow();
- setStyleBits(SHOULD_BECOME_KEY | SHOULD_BECOME_MAIN | RESIZABLE, isFocusable); // set bits at once
+ final boolean isResizable = isTargetResizable();
+ setStyleBits(SHOULD_BECOME_KEY | SHOULD_BECOME_MAIN | RESIZABLE, (!isFocusable || !isResizable) ? false : true);
}
@Override
public void setAlwaysOnTop(boolean isAlwaysOnTop) {
setStyleBits(ALWAYS_ON_TOP, isAlwaysOnTop);
< prev index next >