https://git.reactos.org/?p=reactos.git;a=commitdiff;h=209439a5aed328b59cd52c...
commit 209439a5aed328b59cd52c0c54901a7ca5033af8 Author: Carl J. Bialorucki cbialo2@outlook.com AuthorDate: Thu Jun 29 09:50:43 2023 -0600 Commit: GitHub noreply@github.com 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; }