OSX, fixed sf::Window::SetPosition

git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/branches/sfml2@1773 4e206d99-4929-0410-ac5d-dfc041789085
This commit is contained in:
mantognini 2011-01-21 22:41:22 +00:00
parent 0a7b98dd0b
commit 0cf57db9c2
2 changed files with 29 additions and 1 deletions

View File

@ -65,6 +65,7 @@ namespace sf {
-(id)initWithMode:(sf::VideoMode const*)mode andStyle:(unsigned long)style;
-(void)dealloc;
-(float)screenHeight;
-(float)titlebarHeight;
@end

View File

@ -263,7 +263,7 @@
NSPoint point = NSMakePoint(x, y);
// Flip for SFML window coordinate system.
point.y = NSHeight([[myWindow screen] visibleFrame]) - point.y;
point.y = [self screenHeight] - point.y;
// Place the window.
[myWindow setFrameTopLeftPoint:point];
@ -421,6 +421,33 @@
#pragma mark
#pragma mark Other methods
////////////////////////////////////////////////////////
-(float)screenHeight {
// 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;
}
////////////////////////////////////////////////////////
-(float)titlebarHeight {
return NSHeight([myWindow frame]) - NSHeight([[myWindow contentView] frame]);