summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
c82da59)
- Implement showing and closing the start menu by pressing the WIN key
- Implement handling WM_KLUDGEMINRECT message that informs the window manager the place of an application in the taskbar in order to show the minimization or maximization animation of a window
- Implement showing taskbar settings when the user selects to show the taskbar settings from the settings menu in start menu
- Implement hiding the Favorites menu in the start menu when needed
svn path=/branches/shell-experiments/; revision=62010
#include <shlguid_undoc.h>
#include <uxtheme.h>
#include <strsafe.h>
#include <shlguid_undoc.h>
#include <uxtheme.h>
#include <strsafe.h>
#include "tmschema.h"
#include "resource.h"
#include "tmschema.h"
#include "resource.h"
TEXT("Advanced"),
TEXT("StartMenuLogoff")));
TEXT("Advanced"),
TEXT("StartMenuLogoff")));
+ /* Favorites */
+ if (!GetExplorerRegValueSet(HKEY_CURRENT_USER,
+ TEXT("Advanced"),
+ TEXT("StartMenuFavorites")))
+ {
+ DeleteMenu(hMenu,
+ IDM_FAVORITES,
+ MF_BYCOMMAND);
+ }
/* Documents */
if (SHRestricted(REST_NORECENTDOCSMENU))
/* Documents */
if (SHRestricted(REST_NORECENTDOCSMENU))
break;
case HSHELL_TASKMAN:
break;
case HSHELL_TASKMAN:
+ PostMessage(ITrayWindow_GetHWND(This->Tray), TWM_OPENSTARTMENU,0, 0);
+ break;
+
case HSHELL_LANGUAGE:
case HSHELL_SYSMENU:
case HSHELL_ENDTASK:
case HSHELL_LANGUAGE:
case HSHELL_SYSMENU:
case HSHELL_ENDTASK:
+ case WM_KLUDGEMINRECT:
+ {
+ PTASK_ITEM TaskItem = TaskSwitchWnd_FindTaskItem(This, (HWND)wParam);
+ if (TaskItem)
+ {
+ RECT* prcMinRect = (RECT*)lParam;
+ RECT rcItem, rcToolbar;
+ SendMessageW(This->hWndToolbar,TB_GETITEMRECT, TaskItem->Index, (LPARAM)&rcItem);
+ GetWindowRect(This->hWndToolbar, &rcToolbar);
+
+ OffsetRect(&rcItem, rcToolbar.left, rcToolbar.top);
+
+ *prcMinRect = rcItem;
+ return TRUE;
+ }
+ return FALSE;
+ }
+
default:
/* HandleDefaultMessage: */
if (uMsg == This->ShellHookMsg && This->ShellHookMsg != 0)
default:
/* HandleDefaultMessage: */
if (uMsg == This->ShellHookMsg && This->ShellHookMsg != 0)
break;
case TWM_OPENSTARTMENU:
break;
case TWM_OPENSTARTMENU:
- SendMessage(This->hWnd, WM_COMMAND, MAKEWPARAM(BN_CLICKED, IDC_STARTBTN), (LPARAM)This->hwndStart);
- break;
+ {
+ HWND hwndStartMenu;
+ HRESULT hr = IUnknown_GetWindow((IUnknown*)This->StartMenuPopup, &hwndStartMenu);
+ if (FAILED(hr))
+ break;
+
+ if (IsWindowVisible(hwndStartMenu))
+ SetWindowPos(hwndStartMenu, 0,0,0,0,0, SWP_HIDEWINDOW | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER);
+ else
+ SendMessage(This->hWnd, WM_COMMAND, MAKEWPARAM(BN_CLICKED, IDC_STARTBTN), (LPARAM)This->hwndStart);
case WM_COMMAND:
if ((HWND)lParam == This->hwndStart)
{
case WM_COMMAND:
if ((HWND)lParam == This->hwndStart)
{
{
/* FIXME: Handle these commands as well */
case IDM_TASKBARANDSTARTMENU:
{
/* FIXME: Handle these commands as well */
case IDM_TASKBARANDSTARTMENU:
+
+ ITrayWindowImpl_DisplayProperties(ITrayWindow_from_impl(This));
+ break;
+
case IDM_SEARCH:
case IDM_HELPANDSUPPORT:
break;
case IDM_SEARCH:
case IDM_HELPANDSUPPORT:
break;