Author: mlytwyn
Date: Mon May 5 18:34:52 2014
New Revision: 37840
URL: http://svn.gna.org/viewcvs/gnustep?rev=37840&view=rev
Log:
Additional fixes for 'screen' method processing
Modified:
libs/gui/branches/gnustep_testplant_branch/Source/NSScreen.m
libs/gui/branches/gnustep_testplant_branch/Source/NSWindow.m
Modified: libs/gui/branches/gnustep_testplant_branch/Source/NSScreen.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/gui/branches/gnustep_testplant_branch/Source/NSScreen.m?rev=37840&r1=37839&r2=37840&view=diff
==============================================================================
--- libs/gui/branches/gnustep_testplant_branch/Source/NSScreen.m
(original)
+++ libs/gui/branches/gnustep_testplant_branch/Source/NSScreen.m Mon May
5 18:34:52 2014
@@ -132,7 +132,7 @@
NSWindow *keyWindow;
keyWindow = [NSApp keyWindow];
- if (keyWindow != nil)
+ if ((keyWindow != nil) && ([keyWindow screen] != nil))
{
return [keyWindow screen];
}
Modified: libs/gui/branches/gnustep_testplant_branch/Source/NSWindow.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/gui/branches/gnustep_testplant_branch/Source/NSWindow.m?rev=37840&r1=37839&r2=37840&view=diff
==============================================================================
--- libs/gui/branches/gnustep_testplant_branch/Source/NSWindow.m
(original)
+++ libs/gui/branches/gnustep_testplant_branch/Source/NSWindow.m Mon May
5 18:34:52 2014
@@ -166,6 +166,7 @@
- (void) _lossOfKeyOrMainWindow;
- (NSView *) _windowView;
- (NSScreen *) _screenForFrame: (NSRect)frame;
+- (NSScreen*) _screen;
@end
@implementation NSWindow (GNUstepPrivate)
@@ -410,6 +411,16 @@
NSStringFromRect(frame), theScreen, (long)largest);
return theScreen;
+}
+
+- (NSScreen*) _screen
+{
+ // Internal support method to allow 'screen' method to adhere to Cocoa
behavior
+ // i.e. screen CAN return nil if no part of window shows up on screen
+ NSScreen *screen = [self screen];
+ if (screen == nil)
+ screen = [NSScreen mainScreen];
+ return screen;
}
@end
@@ -1372,7 +1383,7 @@
- (NSDictionary*) deviceDescription
{
- return [[self screen] deviceDescription];
+ return [[self _screen] deviceDescription];
}
- (NSGraphicsContext*) graphicsContext
@@ -1382,15 +1393,14 @@
- (CGFloat) userSpaceScaleFactor
{
- if (_styleMask & NSUnscaledWindowMask)
+ if ((_styleMask & NSUnscaledWindowMask) || (_screen == nil))
{
return 1.0;
}
- else if (_screen != nil)
+ else
{
return [_screen userSpaceScaleFactor];
}
- return 1.0;
}
- (NSInteger) gState
@@ -1802,7 +1812,7 @@
&& _f.visible == NO)
{
NSRect nframe = [self constrainFrameRect: _frame
- toScreen: [self screen]];
+ toScreen: [self _screen]];
[self setFrame: nframe display: NO];
}
// create deferred window
@@ -2211,7 +2221,7 @@
titled windows are constrained */
if (_styleMask & NSTitledWindowMask)
{
- frameRect = [self constrainFrameRect: frameRect toScreen: [self screen]];
+ frameRect = [self constrainFrameRect: frameRect toScreen: [self
_screen]];
}
// If nothing changes, don't send it to the backend and don't redisplay
@@ -4989,10 +4999,7 @@
}
// If window doesn't show up on any screen then just include main screen
frame...
- NSScreen *myScreen = [self screen];
- if (myScreen == nil)
- myScreen = [NSScreen mainScreen];
-
+ NSScreen *myScreen = [self _screen];
/*
* The screen rectangle should give the area of the screen in which
* the window could be placed (ie a rectangle excluding the dock).
@@ -5053,7 +5060,7 @@
*/
- (BOOL) isZoomed
{
- NSRect maxRect = [[self screen] visibleFrame];
+ NSRect maxRect = [[self _screen] visibleFrame];
if ([_delegate respondsToSelector:
@selector(windowWillUseStandardFrame:defaultFrame:)])
{
@@ -5092,7 +5099,7 @@
*/
- (void) zoom: (id)sender
{
- NSRect maxRect = [[self screen] visibleFrame];
+ NSRect maxRect = [[self _screen] visibleFrame];
if ([_delegate respondsToSelector:
@selector(windowWillUseStandardFrame:defaultFrame:)])
{
@@ -5103,7 +5110,7 @@
maxRect = [self windowWillUseStandardFrame: self defaultFrame: maxRect];
}
- maxRect = [self constrainFrameRect: maxRect toScreen: [self screen]];
+ maxRect = [self constrainFrameRect: maxRect toScreen: [self _screen]];
// Compare the new frame with the current one
if ((abs(NSMaxX(maxRect) - NSMaxX(_frame)) < DIST)
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs