[SHELL32] Handle the Progman Folder options message and tab switching support (#5574)

* Handle the "OnShowOptionsDlg" message
* Support switching tabs
* Update dll/win32/shell32/dialogs/folder_options.cpp
* Update dll/win32/shell32/shelldesktop/CDesktopBrowser.cpp
* ShowFolderOptionsDialog workaround
* Added Vista pages, define for magic message

---------

Co-authored-by: Stanislav Motylkov <x86corez@gmail.com>
Co-authored-by: Thamatip Chitpong <weedgamer131@gmail.com>
This commit is contained in:
Whindmar Saksit 2024-04-05 03:53:57 +02:00 committed by GitHub
parent 5b82ada2ed
commit 8841e3d7ba
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 84 additions and 9 deletions

View file

@ -85,6 +85,7 @@ public:
LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnGetChangeNotifyServer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnShowOptionsDlg(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
DECLARE_WND_CLASS_EX(szProgmanClassName, CS_DBLCLKS, COLOR_DESKTOP)
@ -98,6 +99,7 @@ BEGIN_MSG_MAP(CBaseBar)
MESSAGE_HANDLER(WM_COMMAND, OnCommand)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
MESSAGE_HANDLER(WM_DESKTOP_GET_CNOTIFY_SERVER, OnGetChangeNotifyServer)
MESSAGE_HANDLER(WM_PROGMAN_OPENSHELLSETTINGS, OnShowOptionsDlg)
END_MSG_MAP()
BEGIN_COM_MAP(CDesktopBrowser)
@ -458,6 +460,26 @@ LRESULT CDesktopBrowser::OnGetChangeNotifyServer(UINT uMsg, WPARAM wParam, LPARA
return (LRESULT)m_hwndChangeNotifyServer;
}
extern VOID WINAPI ShowFolderOptionsDialog(UINT Page, BOOL Async);
LRESULT CDesktopBrowser::OnShowOptionsDlg(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
switch (wParam)
{
case 0:
#if (NTDDI_VERSION >= NTDDI_VISTA)
case 2:
case 7:
#endif
ShowFolderOptionsDialog((UINT)(UINT_PTR)wParam, TRUE);
break;
case 1:
_NotifyTray(WM_COMMAND, TRAYCMD_TASKBAR_PROPERTIES, 0);
break;
}
return 0;
}
HRESULT CDesktopBrowser_CreateInstance(IShellDesktopTray *Tray, REFIID riid, void **ppv)
{
return ShellObjectCreatorInit<CDesktopBrowser, IShellDesktopTray*>(Tray, riid, ppv);