https://git.reactos.org/?p=reactos.git;a=commitdiff;h=77ab709b61991c7e137d5ea0264a107dd3787208

commit 77ab709b61991c7e137d5ea0264a107dd3787208
Author:     Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com>
AuthorDate: Fri Dec 8 14:56:12 2023 +0900
Commit:     Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com>
CommitDate: Fri Dec 8 14:56:12 2023 +0900

    [SHIMGVW] Improve window size handling
    
    CORE-19358
---
 dll/win32/shimgvw/shimgvw.c | 41 +++++++++++++++++++----------------------
 dll/win32/shimgvw/shimgvw.h |  8 ++++----
 2 files changed, 23 insertions(+), 26 deletions(-)

diff --git a/dll/win32/shimgvw/shimgvw.c b/dll/win32/shimgvw/shimgvw.c
index 6e04d71bcfc..0d9d3dc8342 100644
--- a/dll/win32/shimgvw/shimgvw.c
+++ b/dll/win32/shimgvw/shimgvw.c
@@ -829,6 +829,12 @@ ImageView_LoadSettings(VOID)
     DWORD dwSize;
     LONG nError;
 
+    shiSettings.Maximized = FALSE;
+    shiSettings.X         = CW_USEDEFAULT;
+    shiSettings.Y         = CW_USEDEFAULT;
+    shiSettings.Width     = 520;
+    shiSettings.Height    = 400;
+
     nError = RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\ReactOS\\shimgvw", 
0, KEY_READ, &hKey);
     if (nError)
         return FALSE;
@@ -845,16 +851,17 @@ ImageView_SaveSettings(HWND hwnd)
 {
     WINDOWPLACEMENT wp;
     HKEY hKey;
+    RECT *prc;
 
-    ShowWindow(hwnd, SW_HIDE);
     wp.length = sizeof(WINDOWPLACEMENT);
     GetWindowPlacement(hwnd, &wp);
 
-    shiSettings.Left = wp.rcNormalPosition.left;
-    shiSettings.Top  = wp.rcNormalPosition.top;
-    shiSettings.Right  = wp.rcNormalPosition.right;
-    shiSettings.Bottom = wp.rcNormalPosition.bottom;
-    shiSettings.Maximized = (IsZoomed(hwnd) || (wp.flags & 
WPF_RESTORETOMAXIMIZED));
+    prc = &wp.rcNormalPosition;
+    shiSettings.X = prc->left;
+    shiSettings.Y = prc->top;
+    shiSettings.Width = prc->right - prc->left;
+    shiSettings.Height = prc->bottom - prc->top;
+    shiSettings.Maximized = IsZoomed(hwnd);
 
     if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Software\\ReactOS\\shimgvw"), 0, 
NULL,
         REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL) == 
ERROR_SUCCESS)
@@ -940,12 +947,6 @@ ImageView_DispWndProc(HWND hwnd, UINT Message, WPARAM 
wParam, LPARAM lParam)
 static VOID
 ImageView_InitControls(HWND hwnd)
 {
-    MoveWindow(hwnd, shiSettings.Left, shiSettings.Top,
-               shiSettings.Right - shiSettings.Left,
-               shiSettings.Bottom - shiSettings.Top, TRUE);
-
-    if (shiSettings.Maximized) ShowWindow(hwnd, SW_MAXIMIZE);
-
     hDispWnd = CreateWindowExW(WS_EX_CLIENTEDGE, WC_STATIC, L"",
                                WS_CHILD | WS_VISIBLE,
                                0, 0, 0, 0, hwnd, NULL, hInstance, NULL);
@@ -1182,14 +1183,7 @@ ImageView_CreateWindow(HWND hwnd, LPCWSTR szFileName)
         DPRINT1("Warning, CoInitializeEx failed with code=%08X\n", 
(int)hComRes);
     }
 
-    if (!ImageView_LoadSettings())
-    {
-        shiSettings.Maximized = FALSE;
-        shiSettings.Left      = 0;
-        shiSettings.Top       = 0;
-        shiSettings.Right     = 520;
-        shiSettings.Bottom    = 400;
-    }
+    ImageView_LoadSettings();
 
     // Initialize GDI+
     gdiplusStartupInput.GdiplusVersion              = 1;
@@ -1214,8 +1208,11 @@ ImageView_CreateWindow(HWND hwnd, LPCWSTR szFileName)
     LoadStringW(hInstance, IDS_APPTITLE, szBuf, _countof(szBuf));
     hMainWnd = CreateWindowExW(WS_EX_WINDOWEDGE, WC_SHIMGVW, szBuf,
                                WS_OVERLAPPEDWINDOW | WS_VISIBLE | 
WS_CLIPSIBLINGS,
-                               CW_USEDEFAULT, CW_USEDEFAULT,
-                               0, 0, NULL, NULL, hInstance, NULL);
+                               shiSettings.X, shiSettings.Y,
+                               shiSettings.Width, shiSettings.Height,
+                               NULL, NULL, hInstance, NULL);
+    if (shiSettings.Maximized)
+        ShowWindow(hMainWnd, SW_MAXIMIZE);
 
     // make sure the path has no quotes on it
     StringCbCopyW(szInitialFile, sizeof(szInitialFile), szFileName);
diff --git a/dll/win32/shimgvw/shimgvw.h b/dll/win32/shimgvw/shimgvw.h
index 4f89213a445..76aa255856f 100644
--- a/dll/win32/shimgvw/shimgvw.h
+++ b/dll/win32/shimgvw/shimgvw.h
@@ -8,10 +8,10 @@ extern HINSTANCE hInstance;
 typedef struct
 {
     BOOL Maximized;
-    INT Left;
-    INT Top;
-    INT Right;
-    INT Bottom;
+    INT X;
+    INT Y;
+    INT Width;
+    INT Height;
 } SHIMGVW_SETTINGS;
 
 typedef struct SHIMGVW_FILENODE_INTERNAL

Reply via email to