Allow activating tasks

svn path=/trunk/; revision=41805
This commit is contained in:
Thomas Bluemel
2009-07-08 14:33:25 +00:00
parent 137c0f6dd5
commit 8d45a2401a
+90 -11
View File
@@ -1028,6 +1028,21 @@ TaskSwitchWnd_AddTask(IN OUT PTASK_SWITCH_WND This,
return TaskItem != NULL;
}
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 @@ TaskSwitchWnd_ActivateTask(IN OUT PTASK_SWITCH_WND This,
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 @@ TaskSwitchWnd_EnableGrouping(IN OUT PTASK_SWITCH_WND This,
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 @@ TaskSwitchWndProc(IN HWND hwnd,
{
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;
}