return FALSE;
}
+ static VOID CALLBACK
+ SendAsyncProc(HWND hwnd, UINT uMsg, DWORD_PTR dwData, LRESULT lResult)
+ {
+ ::PostMessageW(hwnd, WM_NULL, 0, 0);
+ }
VOID HandleTaskItemRightClick(IN OUT PTASK_ITEM TaskItem)
{
ActivateTask(TaskItem->hWnd);
- /* Wait up to 2 seconds for the window to process the foreground notification. */
- DWORD_PTR resultDummy;
- if (!SendMessageTimeout(TaskItem->hWnd, WM_NULL, 0, 0, 0, 2000, &resultDummy))
- ERR("HandleTaskItemRightClick detected the window was unresponsive for 2 seconds, or was destroyed\n");
if (GetForegroundWindow() != TaskItem->hWnd)
ERR("HandleTaskItemRightClick detected the window did not become foreground\n");
- ::SendMessageW(TaskItem->hWnd, WM_POPUPSYSTEMMENU, 0, MAKELPARAM(pt.x, pt.y));
+ ::SendMessageCallbackW(TaskItem->hWnd, WM_POPUPSYSTEMMENU, 0, MAKELPARAM(pt.x, pt.y),
+ SendAsyncProc, (ULONG_PTR)TaskItem);
}
VOID HandleTaskGroupRightClick(IN OUT PTASK_GROUP TaskGroup)
/* ReactOS Checks */
if (!VerifyWnd(mt.OwnerWnd) ||
!ValidateHwndNoErr(mt.CurrentMenu->hWnd) ||
- pti->MessageQueue->QF_flags & QF_ACTIVATIONCHANGE ||
+ //pti->MessageQueue->QF_flags & QF_ACTIVATIONCHANGE || // See CORE-17338
capture_win != IntGetCapture() ) // Should not happen, but this is ReactOS...
{
ErrorExit = TRUE; // Do not wait on dead windows, now win test_capture_4 works.
HMENU menu = GetSystemMenu(hWnd, FALSE);
ERR("WM_POPUPSYSTEMMENU\n");
if (menu)
+ {
+ SetForegroundWindow(hWnd);
TrackPopupMenu(menu, TPM_LEFTBUTTON|TPM_RIGHTBUTTON|TPM_SYSTEM_MENU,
LOWORD(lParam), HIWORD(lParam), 0, hWnd, NULL);
+ }
return 0;
}