From 8024727d4546c07b723d1129651c189f7d2f28e3 Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Mon, 27 Feb 2012 11:26:08 -0800
Subject: [PATCH] EXP-1832 WIP Viewer Size not persistent across logins fixed
 not unmaximizing properly on Windows put in error logging on Mac

---
 indra/llwindow/llwindowmacosx.cpp | 20 ++++++++++++++++----
 indra/llwindow/llwindowwin32.cpp  |  9 +++++++++
 2 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index a998d1f877b..fef5f4da3b3 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 9aef25491b1..bc85acbf459 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;
 }
-- 
GitLab