summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llwindow/llwindowmacosx.cpp20
-rw-r--r--indra/llwindow/llwindowwin32.cpp9
2 files changed, 25 insertions, 4 deletions
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index a998d1f877..fef5f4da3b 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -1271,10 +1271,22 @@ BOOL LLWindowMacOSX::setSizeImpl(const LLCoordWindow size)
Rect client_rect;
if (mWindow && GetWindowBounds(mWindow, kWindowContentRgn, &client_rect) != noErr)
{
- client_rect.right = client_rect.left + size.mX;
- client_rect.bottom = client_rect.top + size.mY;
- OSStatus err = SetWindowBounds(mWindow, kWindowContentRgn, &client_rect);
- return err == noErr;
+ OSStatus err = getWindowBounds(mWindow, kWindowContentRgn, &client_rect);
+ if (err == noErr)
+ {
+ client_rect.right = client_rect.left + size.mX;
+ client_rect.bottom = client_rect.top + size.mY;
+ err = SetWindowBounds(mWindow, kWindowContentRgn, &client_rect);
+ }
+ if (err == noErr)
+ {
+ return TRUE;
+ }
+ else
+ {
+ llinfos << "Error setting size" << err << llendl;
+ return FALSE;
+ }
}
return FALSE;
}
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 9aef25491b..bc85acbf45 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -872,6 +872,15 @@ BOOL LLWindowWin32::setSizeImpl(const LLCoordScreen size)
return FALSE;
}
+ WINDOWPLACEMENT placement;
+ placement.length = sizeof(WINDOWPLACEMENT);
+
+ if (!GetWindowPlacement(mWindowHandle, &placement)) return FALSE;
+
+ placement.showCmd = SW_RESTORE;
+
+ if (!SetWindowPlacement(mWindowHandle, &placement)) return FALSE;
+
moveWindow(position, size);
return TRUE;
}