https://git.reactos.org/?p=reactos.git;a=commitdiff;h=209439a5aed328b59cd52c0c54901a7ca5033af8

commit 209439a5aed328b59cd52c0c54901a7ca5033af8
Author:     Carl J. Bialorucki <[email protected]>
AuthorDate: Thu Jun 29 09:50:43 2023 -0600
Commit:     GitHub <[email protected]>
CommitDate: Thu Jun 29 18:50:43 2023 +0300

    [BROWSEUI] Add status bar view state persistence (#5366)
    
    - Use `HKCU\Software\Microsoft\Internet Explorer\Main\StatusBarOther` 
registry key for the setting persistence.
    - Set its value to 1 when the status bar is visible, and to 0 when the 
status bar is hidden.
    - Query it when the file browser is initialized to set the correct view 
state for the status bar.
    - Set the default state of the status bar to hidden if the registry key 
does not exist, matching the behavior of Windows Server 2003.
    
    CORE-19010
---
 dll/win32/browseui/shellbrowser.cpp | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/dll/win32/browseui/shellbrowser.cpp 
b/dll/win32/browseui/shellbrowser.cpp
index b12fc20e82d..3aec6c38272 100644
--- a/dll/win32/browseui/shellbrowser.cpp
+++ b/dll/win32/browseui/shellbrowser.cpp
@@ -709,7 +709,10 @@ CShellBrowser::CShellBrowser()
     fCurrentShellViewWindow = NULL;
     fCurrentDirectoryPIDL = NULL;
     fStatusBar = NULL;
-    fStatusBarVisible = true;
+    fStatusBarVisible = SHRegGetBoolUSValueW(L"Software\\Microsoft\\Internet 
Explorer\\Main",
+                                             L"StatusBarOther",
+                                             FALSE,
+                                             FALSE);
     fCurrentMenuBar = NULL;
     fHistoryObject = NULL;
     fHistoryStream = NULL;
@@ -788,8 +791,6 @@ HRESULT CShellBrowser::Initialize()
     fStatusBar = CreateWindow(STATUSCLASSNAMEW, NULL, WS_CHILD | WS_VISIBLE | 
WS_CLIPSIBLINGS |
                     SBT_NOBORDERS | SBT_TOOLTIPS, 0, 0, 500, 20, m_hWnd, 
(HMENU)0xa001,
                     _AtlBaseModule.GetModuleInstance(), 0);
-    fStatusBarVisible = true;
-
 
     ShowWindow(SW_SHOWNORMAL);
     UpdateWindow();
@@ -3663,6 +3664,15 @@ LRESULT CShellBrowser::OnToggleStatusBarVisible(WORD 
wNotifyCode, WORD wID, HWND
         ::ShowWindow(fStatusBar, fStatusBarVisible ? SW_SHOW : SW_HIDE);
         RepositionBars();
     }
+    
+    DWORD dwStatusBarVisible = fStatusBarVisible;
+    SHRegSetUSValueW(L"Software\\Microsoft\\Internet Explorer\\Main",
+                     L"StatusBarOther",
+                     REG_DWORD,
+                     &dwStatusBarVisible,
+                     sizeof(dwStatusBarVisible),
+                     SHREGSET_FORCE_HKCU);
+    
     return 0;
 }
 

Reply via email to