winex11: Generate ConfigureNotify events for the children tree.

When an ancestor window is moved.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57370
This commit is contained in:
Rémi Bernon 2024-11-13 15:58:10 +01:00 committed by Alexandre Julliard
parent 50683f7b32
commit 0bd49a68dc
Notes: Alexandre Julliard 2024-11-14 23:13:45 +01:00
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/wine/merge_requests/6815

View file

@ -180,7 +180,6 @@ static void host_window_send_configure_events( struct host_window *win, Display
{
RECT rect = win->children[i].rect;
struct x11drv_win_data *data;
BOOL has_serial;
HWND hwnd;
configure.event = win->children[i].window;
@ -195,11 +194,13 @@ static void host_window_send_configure_events( struct host_window *win, Display
* We may know what was requested, but not what the WM will decide to reply, and our
* fake event might trigger some undesired changes before the real ConfigureNotify.
*/
if (XFindContext( configure.display, configure.window, winContext, (char **)&hwnd )) continue;
if (!(data = get_win_data( hwnd ))) continue;
has_serial = data->wm_state_serial || data->configure_serial;
release_win_data( data );
if (has_serial) continue;
if (!XFindContext( configure.display, configure.window, winContext, (char **)&hwnd ) &&
(data = get_win_data( hwnd )))
{
BOOL has_serial = data->wm_state_serial || data->configure_serial;
release_win_data( data );
if (has_serial) continue;
}
if (previous->type == ConfigureNotify && previous->xconfigure.window == configure.window) continue;
TRACE( "generating ConfigureNotify for window %p/%lx, rect %s\n", hwnd, configure.window, wine_dbgstr_rect(&rect) );