From 48fd4c8d14172ab9780d88bf204d1e4e56f2004e Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi Date: Fri, 5 Mar 2010 21:36:41 +0200 Subject: Working on major bug EXT-4820([NUX] Viewer dimensions on first-run) - moved LLDisplayInfo to llwindow, implemented getting the width/height of screen for mac os and linux. --HG-- branch : product-engine --- indra/llwindow/llwindowmacosx.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'indra/llwindow/llwindowmacosx.cpp') diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index ad97bc45fc..5b21e06fe2 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -3464,6 +3464,26 @@ MASK LLWindowMacOSX::modifiersToMask(SInt16 modifiers) return mask; } +// static +S32 LLWindowMacOSX::getDisplayWidth() +{ + S32 width = 1024; + // Need to invoke cocoa before use getScreenSize() + setupCocoa(); + getScreenSize(&width, NULL); + return width; +} + +// static +S32 LLWindowMacOSX::getDisplayHeight() +{ + S32 height = 768; + // Need to invoke cocoa before use getScreenSize() + setupCocoa(); + getScreenSize(NULL, &height); + return height; +} + #if LL_OS_DRAGDROP_ENABLED OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow, -- cgit v1.3 From 870dcca7871a1903d688c3f6a8f2b30d7cf62b7e Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi Date: Fri, 5 Mar 2010 21:36:41 +0200 Subject: Working on major bug EXT-4820([NUX] Viewer dimensions on first-run) - implemented LLWindowMacOSX::maximize() method --HG-- branch : product-engine --- indra/llwindow/llwindowmacosx-objc.h | 2 +- indra/llwindow/llwindowmacosx-objc.mm | 10 ++++++++++ indra/llwindow/llwindowmacosx.cpp | 28 +++++++++++++++++++++++++++- 3 files changed, 38 insertions(+), 2 deletions(-) (limited to 'indra/llwindow/llwindowmacosx.cpp') diff --git a/indra/llwindow/llwindowmacosx-objc.h b/indra/llwindow/llwindowmacosx-objc.h index 66851300d4..ed8c874dcb 100644 --- a/indra/llwindow/llwindowmacosx-objc.h +++ b/indra/llwindow/llwindowmacosx-objc.h @@ -41,4 +41,4 @@ CursorRef createImageCursor(const char *fullpath, int hotspotX, int hotspotY); OSErr releaseImageCursor(CursorRef ref); OSErr setImageCursor(CursorRef ref); void getScreenSize(int* width, int* height); - +void getVisibleScreen(int *x, int *y, int* width, int* height); diff --git a/indra/llwindow/llwindowmacosx-objc.mm b/indra/llwindow/llwindowmacosx-objc.mm index 6eca24ec1d..5cab2619fd 100644 --- a/indra/llwindow/llwindowmacosx-objc.mm +++ b/indra/llwindow/llwindowmacosx-objc.mm @@ -125,3 +125,13 @@ void getScreenSize(int* width, int* height) [pool release]; } +void getVisibleScreen(int *x, int *y, int* width, int* height) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSRect visible_rect = [[NSScreen mainScreen] visibleFrame]; + if (width) *width = (int)(visible_rect.size.width); + if (height) *height = (int)(visible_rect.size.height); + if (x) *x = (int)(visible_rect.origin.x); + if (y) *y = (int)(visible_rect.origin.y); + [pool release]; +} diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 5b21e06fe2..924acaf148 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -1122,7 +1122,33 @@ BOOL LLWindowMacOSX::getMaximized() BOOL LLWindowMacOSX::maximize() { - // TODO + if (mWindow) + { + // *HACK: Because Mac OSX doesn't have a concept of a "maximized" window, we just + // stretch it out to the visible screen size. + Rect win_rect; + + int visible_x; + int visible_y; + int visible_width; + int visible_height; + int screen_width; + int screen_height; + + getScreenSize(&screen_width, &screen_height); + getVisibleScreen(&visible_x, &visible_y, &visible_width, &visible_height); + + int mac_os_menu_bar_height = screen_height - (visible_height + visible_y); + ::SetRect(&win_rect, + visible_x, + mac_os_menu_bar_height, + visible_width + visible_x, + visible_height + mac_os_menu_bar_height); + + ::SetWindowBounds(mWindow, kWindowStructureRgn, &win_rect); + + return TRUE; + } return FALSE; } -- cgit v1.3