Author: gadamopoulos
Date: Tue Feb 18 09:18:16 2014
New Revision: 62238
URL: http://svn.reactos.org/svn/reactos?rev=62238&view=rev
Log:
[rshell]
- CStartMenu: add a test flag that makes the start menu show its submenus using SMIF_TRACKPOPUP in order to show how CMenuBand can use TrackPopupMenu
Modified:
branches/shell-experiments/base/shell/rshell/CStartMenu.cpp
Modified: branches/shell-experiments/base/shell/rshell/CStartMenu.cpp
URL: http://svn.reactos.org/svn/reactos/branches/shell-experiments/base/shell/rs…
==============================================================================
--- branches/shell-experiments/base/shell/rshell/CStartMenu.cpp [iso-8859-1] (original)
+++ branches/shell-experiments/base/shell/rshell/CStartMenu.cpp [iso-8859-1] Tue Feb 18 09:18:16 2014
@@ -17,6 +17,8 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+
+#define TEST_TRACKPOPUPMENU_SUBMENUS
#include "precomp.h"
@@ -47,6 +49,7 @@
* 1. append the start menu contents from all users
* 2. implement the context menu for start menu entries (programs, control panel, network connetions, printers)
* 3. filter out programs folder from the shell folder part of the start menu
+ * 4. showing the programs start menu is SLOW compared to windows. this needs some investigation
*/
class CShellMenuCallback :
@@ -72,7 +75,11 @@
hr = IUnknown_GetSite(m_pDeskBar, IID_PPV_ARG(ITrayPriv, &m_pTrayPriv));
hr = IUnknown_GetWindow(m_pTrayPriv, &m_hwndTray);
hr = m_pTrayPriv->AppendMenuW(&hmenu);
+#ifndef TEST_TRACKPOPUPMENU_SUBMENUS
hr = m_pShellMenu->SetMenu(hmenu, NULL, SMSET_BOTTOM);
+#else
+ hr = m_pShellMenu->SetMenu(hmenu, m_hwndTray, SMSET_BOTTOM);
+#endif
return hr;
}
@@ -106,8 +113,12 @@
if (iconIndex)
{
- psminfo->dwMask = SMIM_ICON;
- psminfo->iIcon = Shell_GetCachedImageIndex(L"shell32.dll", iconIndex, FALSE);
+ if ((psminfo->dwMask & SMIM_ICON) != 0)
+ psminfo->iIcon = Shell_GetCachedImageIndex(L"shell32.dll", iconIndex, FALSE);
+#ifdef TEST_TRACKPOPUPMENU_SUBMENUS
+ if ((psminfo->dwMask & SMIM_FLAGS) != 0)
+ psminfo->dwFlags |= SMIF_TRACKPOPUP;
+#endif
}
return S_OK;
}