[explorer_new]
[reactos.git] / base / shell / explorer-new / taskswnd.c
index 54ee643..9a286f9 100644 (file)
@@ -709,13 +709,10 @@ TaskSwitchWnd_AddToTaskGroup(IN OUT PTASK_SWITCH_WND This,
 
     /* Allocate a new task group */
     TaskGroup = HeapAlloc(hProcessHeap,
-                          0,
+                          HEAP_ZERO_MEMORY,
                           sizeof(*TaskGroup));
     if (TaskGroup != NULL)
     {
-        ZeroMemory(TaskGroup,
-                   sizeof(*TaskGroup));
-
         TaskGroup->dwTaskCount = 1;
         TaskGroup->dwProcessId = dwProcessId;
         TaskGroup->Index = -1;
@@ -1465,7 +1462,7 @@ TaskSwitchWnd_Create(IN OUT PTASK_SWITCH_WND This)
                     sizeof(TBBUTTON),
                     0);
 
-        This->TaskIcons = ImageList_Create(16, 16, ILC_COLOR32, 0, 1000);
+        This->TaskIcons = ImageList_Create(16, 16, ILC_COLOR32 | ILC_MASK, 0, 1000);
         SendMessage(This->hWndToolbar, TB_SETIMAGELIST, 0, (LPARAM)This->TaskIcons);
 
         /* Calculate the default button size. Don't save this in This->ButtonSize.cx so that
@@ -1635,6 +1632,9 @@ TaskSwitchWnd_HandleShellHookMsg(IN OUT PTASK_SWITCH_WND This,
             break;
 
         case HSHELL_TASKMAN:
+            PostMessage(ITrayWindow_GetHWND(This->Tray), TWM_OPENSTARTMENU,0, 0);
+            break;
+
         case HSHELL_LANGUAGE:
         case HSHELL_SYSMENU:
         case HSHELL_ENDTASK:
@@ -2065,13 +2065,11 @@ ForwardContextMenuMsg:
             {
                 LPCREATESTRUCT CreateStruct = (LPCREATESTRUCT)lParam;
                 This = HeapAlloc(hProcessHeap,
-                                 0,
+                                 HEAP_ZERO_MEMORY,
                                  sizeof(*This));
                 if (This == NULL)
                     return FALSE;
 
-                ZeroMemory(This,
-                           sizeof(*This));
                 This->hWnd = hwnd;
                 This->hWndNotify = CreateStruct->hwndParent;
                 This->Tray = (ITrayWindow*)CreateStruct->lpCreateParams;
@@ -2128,6 +2126,24 @@ ForwardContextMenuMsg:
                 break;
 #endif
 
+            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)