mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-06-03 06:30:42 +00:00
Additional fixes for 'screen' method processing
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/branches/gnustep_testplant_branch@37840 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
0176b9a65d
commit
3877d7c696
2 changed files with 21 additions and 14 deletions
|
@ -132,7 +132,7 @@ static NSMutableArray *screenArray = nil;
|
||||||
NSWindow *keyWindow;
|
NSWindow *keyWindow;
|
||||||
|
|
||||||
keyWindow = [NSApp keyWindow];
|
keyWindow = [NSApp keyWindow];
|
||||||
if (keyWindow != nil)
|
if ((keyWindow != nil) && ([keyWindow screen] != nil))
|
||||||
{
|
{
|
||||||
return [keyWindow screen];
|
return [keyWindow screen];
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,6 +166,7 @@ static GSWindowAnimationDelegate *animationDelegate;
|
||||||
- (void) _lossOfKeyOrMainWindow;
|
- (void) _lossOfKeyOrMainWindow;
|
||||||
- (NSView *) _windowView;
|
- (NSView *) _windowView;
|
||||||
- (NSScreen *) _screenForFrame: (NSRect)frame;
|
- (NSScreen *) _screenForFrame: (NSRect)frame;
|
||||||
|
- (NSScreen*) _screen;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation NSWindow (GNUstepPrivate)
|
@implementation NSWindow (GNUstepPrivate)
|
||||||
|
@ -412,6 +413,16 @@ has blocked and waited for events.
|
||||||
return theScreen;
|
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
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
@ -1372,7 +1383,7 @@ titleWithRepresentedFilename(NSString *representedFilename)
|
||||||
|
|
||||||
- (NSDictionary*) deviceDescription
|
- (NSDictionary*) deviceDescription
|
||||||
{
|
{
|
||||||
return [[self screen] deviceDescription];
|
return [[self _screen] deviceDescription];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSGraphicsContext*) graphicsContext
|
- (NSGraphicsContext*) graphicsContext
|
||||||
|
@ -1382,15 +1393,14 @@ titleWithRepresentedFilename(NSString *representedFilename)
|
||||||
|
|
||||||
- (CGFloat) userSpaceScaleFactor
|
- (CGFloat) userSpaceScaleFactor
|
||||||
{
|
{
|
||||||
if (_styleMask & NSUnscaledWindowMask)
|
if ((_styleMask & NSUnscaledWindowMask) || (_screen == nil))
|
||||||
{
|
{
|
||||||
return 1.0;
|
return 1.0;
|
||||||
}
|
}
|
||||||
else if (_screen != nil)
|
else
|
||||||
{
|
{
|
||||||
return [_screen userSpaceScaleFactor];
|
return [_screen userSpaceScaleFactor];
|
||||||
}
|
}
|
||||||
return 1.0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSInteger) gState
|
- (NSInteger) gState
|
||||||
|
@ -1802,7 +1812,7 @@ titleWithRepresentedFilename(NSString *representedFilename)
|
||||||
&& _f.visible == NO)
|
&& _f.visible == NO)
|
||||||
{
|
{
|
||||||
NSRect nframe = [self constrainFrameRect: _frame
|
NSRect nframe = [self constrainFrameRect: _frame
|
||||||
toScreen: [self screen]];
|
toScreen: [self _screen]];
|
||||||
[self setFrame: nframe display: NO];
|
[self setFrame: nframe display: NO];
|
||||||
}
|
}
|
||||||
// create deferred window
|
// create deferred window
|
||||||
|
@ -2211,7 +2221,7 @@ titleWithRepresentedFilename(NSString *representedFilename)
|
||||||
titled windows are constrained */
|
titled windows are constrained */
|
||||||
if (_styleMask & NSTitledWindowMask)
|
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
|
// If nothing changes, don't send it to the backend and don't redisplay
|
||||||
|
@ -4989,10 +4999,7 @@ current key view.<br />
|
||||||
}
|
}
|
||||||
|
|
||||||
// If window doesn't show up on any screen then just include main screen frame...
|
// If window doesn't show up on any screen then just include main screen frame...
|
||||||
NSScreen *myScreen = [self screen];
|
NSScreen *myScreen = [self _screen];
|
||||||
if (myScreen == nil)
|
|
||||||
myScreen = [NSScreen mainScreen];
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The screen rectangle should give the area of the screen in which
|
* The screen rectangle should give the area of the screen in which
|
||||||
* the window could be placed (ie a rectangle excluding the dock).
|
* the window could be placed (ie a rectangle excluding the dock).
|
||||||
|
@ -5053,7 +5060,7 @@ current key view.<br />
|
||||||
*/
|
*/
|
||||||
- (BOOL) isZoomed
|
- (BOOL) isZoomed
|
||||||
{
|
{
|
||||||
NSRect maxRect = [[self screen] visibleFrame];
|
NSRect maxRect = [[self _screen] visibleFrame];
|
||||||
|
|
||||||
if ([_delegate respondsToSelector: @selector(windowWillUseStandardFrame:defaultFrame:)])
|
if ([_delegate respondsToSelector: @selector(windowWillUseStandardFrame:defaultFrame:)])
|
||||||
{
|
{
|
||||||
|
@ -5092,7 +5099,7 @@ current key view.<br />
|
||||||
*/
|
*/
|
||||||
- (void) zoom: (id)sender
|
- (void) zoom: (id)sender
|
||||||
{
|
{
|
||||||
NSRect maxRect = [[self screen] visibleFrame];
|
NSRect maxRect = [[self _screen] visibleFrame];
|
||||||
|
|
||||||
if ([_delegate respondsToSelector: @selector(windowWillUseStandardFrame:defaultFrame:)])
|
if ([_delegate respondsToSelector: @selector(windowWillUseStandardFrame:defaultFrame:)])
|
||||||
{
|
{
|
||||||
|
@ -5103,7 +5110,7 @@ current key view.<br />
|
||||||
maxRect = [self windowWillUseStandardFrame: self defaultFrame: maxRect];
|
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
|
// Compare the new frame with the current one
|
||||||
if ((abs(NSMaxX(maxRect) - NSMaxX(_frame)) < DIST)
|
if ((abs(NSMaxX(maxRect) - NSMaxX(_frame)) < DIST)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue