Author: weiden Date: Wed Jul 8 18:33:25 2009 New Revision: 41805
URL: http://svn.reactos.org/svn/reactos?rev=41805&view=rev Log: Allow activating tasks
Modified: trunk/reactos/base/shell/explorer-new/taskswnd.c
Modified: trunk/reactos/base/shell/explorer-new/taskswnd.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/explorer-new/tas... ============================================================================== --- trunk/reactos/base/shell/explorer-new/taskswnd.c [iso-8859-1] (original) +++ trunk/reactos/base/shell/explorer-new/taskswnd.c [iso-8859-1] Wed Jul 8 18:33:25 2009 @@ -1029,6 +1029,21 @@ }
static BOOL +TaskSwitchWnd_ActivateTaskItem(IN OUT PTASK_SWITCH_WND This, + IN OUT PTASK_ITEM TaskItem) +{ + if (TaskItem != NULL) + { + DbgPrint("Activate window 0x%p on button %d\n", TaskItem->hWnd, TaskItem->Index); + } + + TaskSwitchWnd_CheckActivateTaskItem(This, + TaskItem); + + return FALSE; +} + +static BOOL TaskSwitchWnd_ActivateTask(IN OUT PTASK_SWITCH_WND This, IN HWND hWnd) { @@ -1041,20 +1056,14 @@ TaskItem = TaskSwitchWnd_FindOtherTaskItem(This, hWnd); } - - if (TaskItem != NULL) - { - DbgPrint("Activate window 0x%p on button %d\n", hWnd, TaskItem->Index); - } - else + + if (TaskItem == NULL) { DbgPrint("Activate window 0x%p, could not find task\n", hWnd); }
- TaskSwitchWnd_CheckActivateTaskItem(This, - TaskItem); - - return FALSE; + return TaskSwitchWnd_ActivateTaskItem(This, + TaskItem); }
static BOOL @@ -1634,6 +1643,75 @@ FALSE); }
+static VOID +TaskSwitchWnd_HandleTaskItemClick(IN OUT PTASK_SWITCH_WND This, + IN OUT PTASK_ITEM TaskItem) +{ + BOOL bMinimize; + + if (IsWindow(TaskItem->hWnd)) + { + bMinimize = !IsIconic(TaskItem->hWnd) && + TaskItem == This->ActiveTaskItem; + + if (!bMinimize && IsIconic(TaskItem->hWnd)) + { + PostMessage(TaskItem->hWnd, + WM_SYSCOMMAND, + SC_RESTORE, + 0); + } + + SetForegroundWindow(TaskItem->hWnd); + + if (bMinimize) + { + PostMessage(TaskItem->hWnd, + WM_SYSCOMMAND, + SC_MINIMIZE, + 0); + } + } +} + +static VOID +TaskSwitchWnd_HandleTaskGroupClick(IN OUT PTASK_SWITCH_WND This, + IN OUT PTASK_GROUP TaskGroup) +{ + /* TODO: Show task group menu */ +} + +static BOOL +TaskSwitchWnd_HandleButtonClick(IN OUT PTASK_SWITCH_WND This, + IN WORD wIndex) +{ + PTASK_ITEM TaskItem; + PTASK_GROUP TaskGroup; + + if (This->IsGroupingEnabled) + { + TaskGroup = FindTaskGroupByIndex(This, + (INT)wIndex); + if (TaskGroup != NULL && TaskGroup->IsCollapsed) + { + TaskSwitchWnd_HandleTaskGroupClick(This, + TaskGroup); + return TRUE; + } + } + + TaskItem = FindTaskItemByIndex(This, + (INT)wIndex); + if (TaskItem != NULL) + { + TaskSwitchWnd_HandleTaskItemClick(This, + TaskItem); + return TRUE; + } + + return FALSE; +} + static LRESULT TaskSwichWnd_HandleItemPaint(IN OUT PTASK_SWITCH_WND This, IN OUT NMTBCUSTOMDRAW *nmtbcd) @@ -1860,7 +1938,8 @@ { if (lParam != 0 && (HWND)lParam == This->hWndToolbar) { - DbgPrint("WM_COMMAND %u:%u (%u)\n", (UINT)LOWORD(wParam), (UINT)HIWORD(wParam), (UINT)wParam); + TaskSwitchWnd_HandleButtonClick(This, + LOWORD(wParam)); } break; }