mirror of
https://github.com/SFML/SFML.git
synced 2024-11-25 12:51:05 +08:00
OSX, Apply a better fix to compute screen height
git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/branches/sfml2@1793 4e206d99-4929-0410-ac5d-dfc041789085
This commit is contained in:
parent
f664148e27
commit
b26215ef96
@ -481,39 +481,11 @@
|
|||||||
////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////
|
||||||
-(float)screenHeight
|
-(float)screenHeight
|
||||||
{
|
{
|
||||||
// With Mac OS X 10.4 and 10.5, there is a shift upwards
|
NSDictionary *deviceDescription = [[myWindow screen] deviceDescription];
|
||||||
// (about 22px – that is the apple menu bar height). With 10.6 and later
|
NSNumber *screenNumber = [deviceDescription valueForKey:@"NSScreenNumber"];
|
||||||
// we have a workaround : we hide the dock and get the visibleFrame of the
|
CGDirectDisplayID screenID = (CGDirectDisplayID)[screenNumber intValue];
|
||||||
// screen (see NSApplicationPresentationOptions and NSScreen for more info).
|
CGFloat height = CGDisplayPixelsHigh(screenID);
|
||||||
#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
|
|
||||||
return NSHeight([[myWindow screen] frame]);
|
|
||||||
|
|
||||||
#else // (NSApplicationPresentationOptions Availability: Mac OS X 10.6 and later)
|
|
||||||
// We want to recompute it because the user may have moved the window to another screen
|
|
||||||
// since last time.
|
|
||||||
|
|
||||||
static float height = 0.f;
|
|
||||||
static NSDate* lastTime = [NSDate date];
|
|
||||||
if (height > 1.f && // height was set at least once.
|
|
||||||
[lastTime timeIntervalSinceNow] > -1.f) { // last time was less than one secode ago.
|
|
||||||
return height; // We don't want to compute it too often because the dock blink.
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save current settings.
|
|
||||||
NSApplicationPresentationOptions currentOptions = [NSApp currentSystemPresentationOptions];
|
|
||||||
|
|
||||||
// Hide dock.
|
|
||||||
[NSApp setPresentationOptions:currentOptions | NSApplicationPresentationHideDock];
|
|
||||||
|
|
||||||
// Get the screen height (without apple menu bar if there is one).
|
|
||||||
height = NSHeight([[myWindow screen] visibleFrame]);
|
|
||||||
lastTime = [NSDate date];
|
|
||||||
|
|
||||||
// Set back user's settings.
|
|
||||||
[NSApp setPresentationOptions:currentOptions];
|
|
||||||
|
|
||||||
return height;
|
return height;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user