src/macosx/native/sun/awt/AWTWindow.m
Print this page
*** 121,130 ****
--- 121,131 ----
@synthesize javaMaxSize;
@synthesize styleBits;
@synthesize isEnabled;
@synthesize ownerWindow;
@synthesize preFullScreenLevel;
+ @synthesize javaMaximizedBounds = _javaMaximizedBounds;
- (void) updateMinMaxSize:(BOOL)resizable {
if (resizable) {
[self.nsWindow setMinSize:self.javaMinSize];
[self.nsWindow setMaxSize:self.javaMaxSize];
*** 249,258 ****
--- 250,260 ----
self.isEnabled = YES;
self.javaPlatformWindow = platformWindow;
self.styleBits = bits;
self.ownerWindow = owner;
[self setPropertiesForStyleBits:styleBits mask:MASK(_METHOD_PROP_BITMASK)];
+ self.javaMaximizedBounds = NSMakeRect(-1, -1, -1, -1);
return self;
}
+ (BOOL) isAWTWindow:(NSWindow *)window {
*** 764,773 ****
--- 766,810 ----
- (BOOL)windowShouldZoom:(NSWindow *)window toFrame:(NSRect)newFrame {
return !NSEqualSizes(self.nsWindow.frame.size, newFrame.size);
}
+ - (NSRect)windowWillUseStandardFrame:(NSWindow *)window defaultFrame:(NSRect)newFrame {
+ CGFloat newWidth;
+ if (self.javaMaximizedBounds.size.width < 0) {
+ newWidth = newFrame.size.width;
+ } else {
+ newWidth = self.javaMaximizedBounds.size.width;
+ if (newWidth < self.javaMinSize.width) {
+ newWidth = self.javaMinSize.width;
+ }
+ if (newWidth > self.javaMaxSize.width) {
+ newWidth = self.javaMaxSize.width;
+ }
+ }
+
+ CGFloat newHeight;
+ if (self.javaMaximizedBounds.size.height < 0) {
+ newHeight = newFrame.size.height;
+ } else {
+ newHeight = self.javaMaximizedBounds.size.height;
+ if (newHeight < self.javaMinSize.height) {
+ newHeight = self.javaMinSize.height;
+ }
+ if (newHeight > self.javaMaxSize.height) {
+ newHeight = self.javaMaxSize.height;
+ }
+ }
+
+ newFrame.size = NSMakeSize(newWidth, newHeight);
+ newFrame.origin = NSMakePoint(self.javaMaximizedBounds.origin.x < 0 ? newFrame.origin.x
+ : self.javaMaximizedBounds.origin.x,
+ self.javaMaximizedBounds.origin.y < 0 ? newFrame.origin.y
+ : self.javaMaximizedBounds.origin.y);
+ return newFrame;
+ }
+
@end // AWTWindow
/*
*** 977,986 ****
--- 1014,1048 ----
JNF_COCOA_EXIT(env);
}
/*
+ *
+ * Class: sun_lwawt_macosx_CPlatformWindow
+ * Method: nativeSetMaximizedBounds
+ * Signature: (JIIII)V
+ */
+ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetMaximizedBounds
+ (JNIEnv *env, jclass clazz, jlong windowPtr, jint x, jint y, jint w, jint h)
+ {
+ JNF_COCOA_ENTER(env);
+
+ NSWindow *nsWindow = OBJC(windowPtr);
+ [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
+ AWTWindow *window = (AWTWindow*)[nsWindow delegate];
+ NSRect rect = NSMakeRect(x, y, w, h);
+ if (y >= 0) {
+ rect = ConvertNSScreenRect([ThreadUtilities getJNIEnv], rect);
+ }
+ window.javaMaximizedBounds = rect;
+ }];
+
+ JNF_COCOA_EXIT(env);
+ }
+
+
+ /*
* Class: sun_lwawt_macosx_CPlatformWindow
* Method: nativePushNSWindowToBack
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativePushNSWindowToBack