[ros-diffs] [weiden] 41805: Allow activating tasks
weiden at svn.reactos.org
weiden at svn.reactos.org
Wed Jul 8 16:33:26 CEST 2009
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/taskswnd.c?rev=41805&r1=41804&r2=41805&view=diff
==============================================================================
--- 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;
}
More information about the Ros-diffs
mailing list