winex11: Take into account the cursor show count when setting the initial cursor for a window.

This commit is contained in:
Alexandre Julliard 2010-05-10 12:33:59 +02:00
parent eeda373f6f
commit 1afd0df7de
1 changed files with 21 additions and 4 deletions

View File

@ -424,6 +424,25 @@ static void sync_window_style( Display *display, struct x11drv_win_data *data )
} }
/***********************************************************************
* sync_window_cursor
*/
static void sync_window_cursor( struct x11drv_win_data *data )
{
HCURSOR cursor;
SERVER_START_REQ( set_cursor )
{
req->flags = 0;
wine_server_call( req );
cursor = reply->prev_count >= 0 ? wine_server_ptr_handle( reply->prev_handle ) : 0;
}
SERVER_END_REQ;
set_window_cursor( data->hwnd, cursor );
}
/*********************************************************************** /***********************************************************************
* sync_window_region * sync_window_region
* *
@ -1053,7 +1072,6 @@ static void set_initial_wm_hints( Display *display, struct x11drv_win_data *data
Atom dndVersion = WINE_XDND_VERSION; Atom dndVersion = WINE_XDND_VERSION;
XClassHint *class_hints; XClassHint *class_hints;
char *process_name = get_process_name(); char *process_name = get_process_name();
Cursor cursor;
wine_tsx11_lock(); wine_tsx11_lock();
@ -1086,9 +1104,6 @@ static void set_initial_wm_hints( Display *display, struct x11drv_win_data *data
XChangeProperty( display, data->whole_window, x11drv_atom(XdndAware), XChangeProperty( display, data->whole_window, x11drv_atom(XdndAware),
XA_ATOM, 32, PropModeReplace, (unsigned char*)&dndVersion, 1 ); XA_ATOM, 32, PropModeReplace, (unsigned char*)&dndVersion, 1 );
if ((cursor = get_x11_cursor( data->cursor )))
XDefineCursor( gdi_display, data->whole_window, cursor );
data->wm_hints = XAllocWMHints(); data->wm_hints = XAllocWMHints();
wine_tsx11_unlock(); wine_tsx11_unlock();
@ -1681,6 +1696,8 @@ static Window create_whole_window( Display *display, struct x11drv_win_data *dat
wine_tsx11_lock(); wine_tsx11_lock();
XFlush( display ); /* make sure the window exists before we start painting to it */ XFlush( display ); /* make sure the window exists before we start painting to it */
wine_tsx11_unlock(); wine_tsx11_unlock();
sync_window_cursor( data );
done: done:
if (win_rgn) DeleteObject( win_rgn ); if (win_rgn) DeleteObject( win_rgn );
return data->whole_window; return data->whole_window;