Author: gadamopoulos Date: Thu Nov 21 11:28:53 2013 New Revision: 61064
URL: http://svn.reactos.org/svn/reactos?rev=61064&view=rev Log: [explorer_new] - call ShellDDEInit, FileIconInit and WinList_Init while initializing - Calling ShellDDEInit fixes cases like pressing Explore in a folder context menu from a file open dialog (before this it just hanged) - We also need to call FileIconInit in order to initialize the shell icons properly. Before this Shell_GetImageLists called FileIconInit in case it was not called - Calling WinList_Init should make CLSID_ShellWindows work but it fails for now. CLSID_ShellWindows is needed in cases like opening a second time My computer from desktop should activates the existing My computer window and it is also needed for SHOpenFolderAndSelectItems in order to work
Modified: trunk/reactos/base/shell/explorer-new/explorer.c trunk/reactos/include/psdk/shlobj_undoc.h
Modified: trunk/reactos/base/shell/explorer-new/explorer.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/explorer-new/exp... ============================================================================== --- trunk/reactos/base/shell/explorer-new/explorer.c [iso-8859-1] (original) +++ trunk/reactos/base/shell/explorer-new/explorer.c [iso-8859-1] Thu Nov 21 11:28:53 2013 @@ -410,6 +410,15 @@
if (CreateShellDesktop) { + /* Initialize shell dde support */ + ShellDDEInit(TRUE); + + /* Initialize shell icons */ + FileIconInit(TRUE); + + /* Initialize CLSID_ShellWindows class */ + WinList_Init(); + if (RegisterTrayWindowClass() && RegisterTaskSwitchWndClass()) { Tray = CreateTrayWindow();
Modified: trunk/reactos/include/psdk/shlobj_undoc.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/shlobj_undoc.h... ============================================================================== --- trunk/reactos/include/psdk/shlobj_undoc.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/shlobj_undoc.h [iso-8859-1] Thu Nov 21 11:28:53 2013 @@ -754,6 +754,10 @@ #define ILGDN_FORPARSING 0 #define ILGDN_NORMAL 1 #define ILGDN_INFOLDER 2 + +BOOL WINAPI FileIconInit(BOOL bFullInit); +void WINAPI ShellDDEInit(BOOL bInit); +DWORD WINAPI WinList_Init(void);
HANDLE WINAPI SHCreateDesktop(IShellDesktopTray*); BOOL WINAPI SHDesktopMessageLoop(HANDLE);