Index: base/applications/taskmgr/applpage.c =================================================================== --- base/applications/taskmgr/applpage.c (revision 59193) +++ base/applications/taskmgr/applpage.c (working copy) @@ -41,6 +41,7 @@ static BOOL bSortAscending = TRUE; DWORD WINAPI ApplicationPageRefreshThread(void *lpParameter); BOOL noApps; +BOOL bApplicationPageSelectionMade = FALSE; BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam); void AddOrUpdateHwnd(HWND hWnd, WCHAR *szTitle, HICON hIcon, BOOL bHung); void ApplicationPageUpdate(void); @@ -272,7 +273,10 @@ noApps = TRUE; EnumWindows(EnumWindowsProc, 0); if (noApps) + { (void)ListView_DeleteAllItems(hApplicationPageListCtrl); + bApplicationPageSelectionMade = FALSE; + } /* Get the image lists */ hImageListLarge = ListView_GetImageList(hApplicationPageListCtrl, LVSIL_NORMAL); @@ -458,6 +462,14 @@ item.lParam = (LPARAM)pAPLI; (void)ListView_InsertItem(hApplicationPageListCtrl, &item); } + + /* Select first item if any */ + if ((ListView_GetNextItem(hApplicationPageListCtrl, -1, LVNI_SELECTED | LVNI_FOCUSED) == -1) && + (ListView_GetItemCount(hApplicationPageListCtrl) > 0) && (!bApplicationPageSelectionMade)) + { + ListView_SetItemState(hApplicationPageListCtrl, 0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); + bApplicationPageSelectionMade = TRUE; + } return; } Index: base/applications/taskmgr/procpage.c =================================================================== --- base/applications/taskmgr/procpage.c (revision 59193) +++ base/applications/taskmgr/procpage.c (working copy) @@ -37,6 +37,7 @@ HWND hProcessPageHeaderCtrl; /* Process Header Control */ HWND hProcessPageEndProcessButton; /* Process End Process button */ HWND hProcessPageShowAllProcessesButton;/* Process Show All Processes checkbox */ +BOOL bProcessPageSelectionMade = FALSE; /* Is item in ListCtrl selected */ static int nProcessPageWidth; static int nProcessPageHeight; @@ -211,6 +212,15 @@ return 0; } +void ProcessPageUpdate(void) +{ + /* Enable or disable the "End Process" button */ + if (ListView_GetSelectedCount(hProcessPageListCtrl)) + EnableWindow(hProcessPageEndProcessButton, TRUE); + else + EnableWindow(hProcessPageEndProcessButton, FALSE); +} + void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam) { LPNMHDR pnmh; @@ -228,11 +238,9 @@ { switch (pnmh->code) { - #if 0 case LVN_ITEMCHANGED: ProcessPageUpdate(); break; - #endif case LVN_GETDISPINFO: @@ -464,6 +472,14 @@ } SendMessage(hProcessPageListCtrl, WM_SETREDRAW, TRUE, 0); + + /* Select first item if any */ + if ((ListView_GetNextItem(hProcessPageListCtrl, -1, LVNI_SELECTED | LVNI_FOCUSED) == -1) && + (ListView_GetItemCount(hProcessPageListCtrl) > 0) && (!bProcessPageSelectionMade)) + { + ListView_SetItemState(hProcessPageListCtrl, 0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); + bProcessPageSelectionMade = TRUE; + } } BOOL ProcessRunning(ULONG ProcessId)