From f14c34912966a461dd0a2182f6bb8d75a4555a99 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Wed, 17 Mar 2010 12:29:23 -0500 Subject: [PATCH] winex11.drv: Use CurrentTime to focus windows if we have no timestamp. --- dlls/winex11.drv/window.c | 14 +++++++++----- 1 files changed, 9 insertions(+), 5 deletions(-) diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index 47f7245..46f677b 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -2089,20 +2089,24 @@ void CDECL X11DRV_SetFocus( HWND hwnd ) Display *display = thread_display(); struct x11drv_win_data *data; XWindowChanges changes; + DWORD timestamp; if (!(hwnd = GetAncestor( hwnd, GA_ROOT ))) return; if (!(data = X11DRV_get_win_data( hwnd ))) return; if (data->managed || !data->whole_window) return; + if (EVENT_x11_time_to_win32_time(0)) + /* ICCCM says don't use CurrentTime, so try to use last message time if possible */ + /* FIXME: this is not entirely correct */ + timestamp = GetMessageTime() - EVENT_x11_time_to_win32_time(0); + else + timestamp = CurrentTime; + /* Set X focus and install colormap */ wine_tsx11_lock(); changes.stack_mode = Above; XConfigureWindow( display, data->whole_window, CWStackMode, &changes ); - /* we must not use CurrentTime (ICCCM), so try to use last message time instead */ - /* FIXME: this is not entirely correct */ - XSetInputFocus( display, data->whole_window, RevertToParent, - /* CurrentTime */ - GetMessageTime() - EVENT_x11_time_to_win32_time(0)); + XSetInputFocus( display, data->whole_window, RevertToParent, timestamp ); wine_tsx11_unlock(); } -- 1.6.3.3