winex11.drv: Move update_windows_on_desktop_resize().
Move update_windows_on_desktop_resize() to be in X11DRV_DisplayDevices_Update() and rename it to update_windows_on_display_change(), which is a more appropriate name because the desktop is unnecessarily resized when display devices change. Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
fd6f50c0d3
commit
26b26a2e0e
|
@ -324,29 +324,6 @@ BOOL CDECL X11DRV_create_desktop( UINT width, UINT height )
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL CALLBACK update_windows_on_desktop_resize( HWND hwnd, LPARAM lparam )
|
|
||||||
{
|
|
||||||
struct x11drv_win_data *data;
|
|
||||||
UINT mask = (UINT)lparam;
|
|
||||||
|
|
||||||
if (!(data = get_win_data( hwnd ))) return TRUE;
|
|
||||||
|
|
||||||
/* update the full screen state */
|
|
||||||
update_net_wm_states( data );
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL is_desktop_fullscreen(void)
|
BOOL is_desktop_fullscreen(void)
|
||||||
{
|
{
|
||||||
RECT primary_rect = get_primary_monitor_rect();
|
RECT primary_rect = get_primary_monitor_rect();
|
||||||
|
@ -390,7 +367,7 @@ static void update_desktop_fullscreen( unsigned int width, unsigned int height)
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* X11DRV_resize_desktop
|
* X11DRV_resize_desktop
|
||||||
*/
|
*/
|
||||||
void X11DRV_resize_desktop( UINT mask, BOOL send_display_change )
|
void X11DRV_resize_desktop( BOOL send_display_change )
|
||||||
{
|
{
|
||||||
RECT primary_rect, virtual_rect;
|
RECT primary_rect, virtual_rect;
|
||||||
HWND hwnd = GetDesktopWindow();
|
HWND hwnd = GetDesktopWindow();
|
||||||
|
@ -403,7 +380,7 @@ void X11DRV_resize_desktop( UINT mask, BOOL send_display_change )
|
||||||
|
|
||||||
if (GetWindowThreadProcessId( hwnd, NULL ) != GetCurrentThreadId())
|
if (GetWindowThreadProcessId( hwnd, NULL ) != GetCurrentThreadId())
|
||||||
{
|
{
|
||||||
SendMessageW( hwnd, WM_X11DRV_RESIZE_DESKTOP, (WPARAM)mask, (LPARAM)send_display_change );
|
SendMessageW( hwnd, WM_X11DRV_RESIZE_DESKTOP, 0, (LPARAM)send_display_change );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -420,6 +397,4 @@ void X11DRV_resize_desktop( UINT mask, BOOL send_display_change )
|
||||||
SMTO_ABORTIFHUNG, 2000, NULL );
|
SMTO_ABORTIFHUNG, 2000, NULL );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EnumWindows( update_windows_on_desktop_resize, (LPARAM)mask );
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -273,6 +273,31 @@ void X11DRV_DisplayDevices_RegisterEventHandlers(void)
|
||||||
handler->register_event_handlers();
|
handler->register_event_handlers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL CALLBACK update_windows_on_display_change(HWND hwnd, LPARAM lparam)
|
||||||
|
{
|
||||||
|
struct x11drv_win_data *data;
|
||||||
|
UINT mask = (UINT)lparam;
|
||||||
|
|
||||||
|
if (!(data = get_win_data(hwnd)))
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
/* update the full screen state */
|
||||||
|
update_net_wm_states(data);
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
void X11DRV_DisplayDevices_Update(BOOL send_display_change)
|
void X11DRV_DisplayDevices_Update(BOOL send_display_change)
|
||||||
{
|
{
|
||||||
RECT old_virtual_rect, new_virtual_rect;
|
RECT old_virtual_rect, new_virtual_rect;
|
||||||
|
@ -288,7 +313,8 @@ void X11DRV_DisplayDevices_Update(BOOL send_display_change)
|
||||||
if (old_virtual_rect.top != new_virtual_rect.top)
|
if (old_virtual_rect.top != new_virtual_rect.top)
|
||||||
mask |= CWY;
|
mask |= CWY;
|
||||||
|
|
||||||
X11DRV_resize_desktop(mask, send_display_change);
|
X11DRV_resize_desktop(send_display_change);
|
||||||
|
EnumWindows(update_windows_on_display_change, (LPARAM)mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize a GPU instance and return its GUID string in guid_string and driver value in driver parameter */
|
/* Initialize a GPU instance and return its GUID string in guid_string and driver value in driver parameter */
|
||||||
|
|
|
@ -2729,7 +2729,7 @@ LRESULT CDECL X11DRV_WindowMessage( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp )
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
case WM_X11DRV_RESIZE_DESKTOP:
|
case WM_X11DRV_RESIZE_DESKTOP:
|
||||||
X11DRV_resize_desktop( (UINT)wp, (BOOL)lp );
|
X11DRV_resize_desktop( (BOOL)lp );
|
||||||
return 0;
|
return 0;
|
||||||
case WM_X11DRV_SET_CURSOR:
|
case WM_X11DRV_SET_CURSOR:
|
||||||
if ((data = get_win_data( hwnd )))
|
if ((data = get_win_data( hwnd )))
|
||||||
|
|
|
@ -657,7 +657,7 @@ struct x11drv_mode_info
|
||||||
};
|
};
|
||||||
|
|
||||||
extern void X11DRV_init_desktop( Window win, unsigned int width, unsigned int height ) DECLSPEC_HIDDEN;
|
extern void X11DRV_init_desktop( Window win, unsigned int width, unsigned int height ) DECLSPEC_HIDDEN;
|
||||||
extern void X11DRV_resize_desktop(UINT, BOOL) DECLSPEC_HIDDEN;
|
extern void X11DRV_resize_desktop(BOOL) DECLSPEC_HIDDEN;
|
||||||
extern BOOL is_virtual_desktop(void) DECLSPEC_HIDDEN;
|
extern BOOL is_virtual_desktop(void) DECLSPEC_HIDDEN;
|
||||||
extern BOOL is_desktop_fullscreen(void) DECLSPEC_HIDDEN;
|
extern BOOL is_desktop_fullscreen(void) DECLSPEC_HIDDEN;
|
||||||
extern BOOL create_desktop_win_data( Window win ) DECLSPEC_HIDDEN;
|
extern BOOL create_desktop_win_data( Window win ) DECLSPEC_HIDDEN;
|
||||||
|
|
Loading…
Reference in New Issue