static BOOL CALLBACK update_windows_on_desktop_resize( HWND hwnd, LPARAM lparam ) { struct x11drv_win_data *data; struct desktop_resize_data *resize_data = (struct desktop_resize_data *)lparam; int mask = 0; if (!(data = get_win_data( hwnd ))) return TRUE; /* update the full screen state */ update_net_wm_states( data ); if (resize_data->old_virtual_rect.left != resize_data->new_virtual_rect.left) mask |= CWX; if (resize_data->old_virtual_rect.top != resize_data->new_virtual_rect.top) mask |= CWY; if (mask && data->whole_window) { POINT pos = virtual_screen_to_root( data->whole_rect.left, data->whole_rect.top ); XWindowChanges changes; changes.x = pos.x; changes.y = pos.y; XReconfigureWMWindow( data->display, data->whole_window, data->vis.screen, mask, &changes ); } release_win_data( data ); if (hwnd == GetForegroundWindow()) clip_fullscreen_window( hwnd, TRUE ); return TRUE; }
static BOOL CALLBACK update_windows_on_desktop_resize( HWND hwnd, LPARAM lparam ) { struct x11drv_win_data *data; Display *display = thread_display(); struct desktop_resize_data *resize_data = (struct desktop_resize_data *)lparam; int mask = 0; if (!(data = X11DRV_get_win_data( hwnd ))) return TRUE; /* update the full screen state */ update_net_wm_states( display, data ); if (resize_data->old_virtual_rect.left != virtual_screen_rect.left) mask |= CWX; if (resize_data->old_virtual_rect.top != virtual_screen_rect.top) mask |= CWY; if (mask && data->whole_window) { XWindowChanges changes; wine_tsx11_lock(); changes.x = data->whole_rect.left - virtual_screen_rect.left; changes.y = data->whole_rect.top - virtual_screen_rect.top; XReconfigureWMWindow( display, data->whole_window, DefaultScreen(display), mask, &changes ); wine_tsx11_unlock(); } if (hwnd == GetForegroundWindow()) clip_fullscreen_window( hwnd, TRUE ); return TRUE; }