diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index e3047fd895d..f13e079d65f 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c @@ -405,6 +405,27 @@ static void handle_wm_protocols( HWND hwnd, XClientMessageEvent *event ) if (state == 0xFFFFFFFF || (state & (MF_DISABLED | MF_GRAYED))) return; } + if (GetActiveWindow() != hwnd) + { + LRESULT ma = SendMessageW( hwnd, WM_MOUSEACTIVATE, + (WPARAM)GetAncestor( hwnd, GA_ROOT ), + MAKELONG(HTCLOSE,WM_LBUTTONDOWN) ); + switch(ma) + { + case MA_NOACTIVATEANDEAT: + case MA_ACTIVATEANDEAT: + return; + case MA_NOACTIVATE: + break; + case MA_ACTIVATE: + case 0: + SetActiveWindow(hwnd); + break; + default: + WARN( "unknown WM_MOUSEACTIVATE code %d\n", (int) ma ); + break; + } + } PostMessageW( hwnd, WM_X11DRV_DELETE_WINDOW, 0, 0 ); } }