mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-15 05:57:27 +00:00
win32u: Move is_window_rect_full_screen implementation from winex11.
Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Huw Davies <huw@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
782220626f
commit
ee405dd8b8
|
@ -1547,6 +1547,27 @@ RECT get_virtual_screen_rect( UINT dpi )
|
||||||
return rect;
|
return rect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL is_window_rect_full_screen( const RECT *rect )
|
||||||
|
{
|
||||||
|
struct monitor *monitor;
|
||||||
|
BOOL ret = FALSE;
|
||||||
|
|
||||||
|
if (!lock_display_devices()) return FALSE;
|
||||||
|
|
||||||
|
LIST_FOR_EACH_ENTRY( monitor, &monitors, struct monitor, entry )
|
||||||
|
{
|
||||||
|
if (rect->left <= monitor->rc_monitor.left && rect->right >= monitor->rc_monitor.right &&
|
||||||
|
rect->top <= monitor->rc_monitor.top && rect->bottom >= monitor->rc_monitor.bottom)
|
||||||
|
{
|
||||||
|
ret = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
unlock_display_devices();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
RECT get_display_rect( const WCHAR *display )
|
RECT get_display_rect( const WCHAR *display )
|
||||||
{
|
{
|
||||||
struct monitor *monitor;
|
struct monitor *monitor;
|
||||||
|
@ -4698,6 +4719,9 @@ ULONG_PTR WINAPI NtUserCallOneParam( ULONG_PTR arg, ULONG code )
|
||||||
case NtUserCallOneParam_GetSysColor:
|
case NtUserCallOneParam_GetSysColor:
|
||||||
return get_sys_color( arg );
|
return get_sys_color( arg );
|
||||||
|
|
||||||
|
case NtUserCallOneParam_IsWindowRectFullScreen:
|
||||||
|
return is_window_rect_full_screen( (const RECT *)arg );
|
||||||
|
|
||||||
case NtUserCallOneParam_RealizePalette:
|
case NtUserCallOneParam_RealizePalette:
|
||||||
return realize_palette( UlongToHandle(arg) );
|
return realize_palette( UlongToHandle(arg) );
|
||||||
|
|
||||||
|
|
|
@ -1156,7 +1156,7 @@ static BOOL X11DRV_ConfigureNotify( HWND hwnd, XEvent *xev )
|
||||||
data->window_rect.bottom - data->window_rect.top, cx, cy );
|
data->window_rect.bottom - data->window_rect.top, cx, cy );
|
||||||
|
|
||||||
style = NtUserGetWindowLongW( data->hwnd, GWL_STYLE );
|
style = NtUserGetWindowLongW( data->hwnd, GWL_STYLE );
|
||||||
if ((style & WS_CAPTION) == WS_CAPTION || !is_window_rect_full_screen( &data->whole_rect ))
|
if ((style & WS_CAPTION) == WS_CAPTION || !NtUserIsWindowRectFullScreen( &data->whole_rect ))
|
||||||
{
|
{
|
||||||
read_net_wm_states( event->display, data );
|
read_net_wm_states( event->display, data );
|
||||||
if ((data->net_wm_state & (1 << NET_WM_STATE_MAXIMIZED)))
|
if ((data->net_wm_state & (1 << NET_WM_STATE_MAXIMIZED)))
|
||||||
|
|
|
@ -549,7 +549,7 @@ BOOL clip_fullscreen_window( HWND hwnd, BOOL reset )
|
||||||
/* maximized windows don't count as full screen */
|
/* maximized windows don't count as full screen */
|
||||||
if ((style & WS_MAXIMIZE) && (style & WS_CAPTION) == WS_CAPTION) return FALSE;
|
if ((style & WS_MAXIMIZE) && (style & WS_CAPTION) == WS_CAPTION) return FALSE;
|
||||||
if (!(data = get_win_data( hwnd ))) return FALSE;
|
if (!(data = get_win_data( hwnd ))) return FALSE;
|
||||||
fullscreen = is_window_rect_full_screen( &data->whole_rect );
|
fullscreen = NtUserIsWindowRectFullScreen( &data->whole_rect );
|
||||||
release_win_data( data );
|
release_win_data( data );
|
||||||
if (!fullscreen) return FALSE;
|
if (!fullscreen) return FALSE;
|
||||||
if (!(thread_data = x11drv_thread_data())) return FALSE;
|
if (!(thread_data = x11drv_thread_data())) return FALSE;
|
||||||
|
|
|
@ -281,35 +281,7 @@ static inline BOOL is_window_resizable( struct x11drv_win_data *data, DWORD styl
|
||||||
{
|
{
|
||||||
if (style & WS_THICKFRAME) return TRUE;
|
if (style & WS_THICKFRAME) return TRUE;
|
||||||
/* Metacity needs the window to be resizable to make it fullscreen */
|
/* Metacity needs the window to be resizable to make it fullscreen */
|
||||||
return is_window_rect_full_screen( &data->whole_rect );
|
return NtUserIsWindowRectFullScreen( &data->whole_rect );
|
||||||
}
|
|
||||||
|
|
||||||
struct monitor_info
|
|
||||||
{
|
|
||||||
const RECT *rect;
|
|
||||||
BOOL full_screen;
|
|
||||||
};
|
|
||||||
|
|
||||||
static BOOL CALLBACK enum_monitor_proc( HMONITOR monitor, HDC hdc, RECT *monitor_rect, LPARAM lparam )
|
|
||||||
{
|
|
||||||
struct monitor_info *info = (struct monitor_info *)lparam;
|
|
||||||
|
|
||||||
if (info->rect->left <= monitor_rect->left && info->rect->right >= monitor_rect->right &&
|
|
||||||
info->rect->top <= monitor_rect->top && info->rect->bottom >= monitor_rect->bottom)
|
|
||||||
{
|
|
||||||
info->full_screen = TRUE;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL is_window_rect_full_screen( const RECT *rect )
|
|
||||||
{
|
|
||||||
struct monitor_info info = {rect, FALSE};
|
|
||||||
|
|
||||||
EnumDisplayMonitors( NULL, NULL, enum_monitor_proc, (LPARAM)&info );
|
|
||||||
return info.full_screen;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
@ -992,7 +964,7 @@ void update_net_wm_states( struct x11drv_win_data *data )
|
||||||
style = NtUserGetWindowLongW( data->hwnd, GWL_STYLE );
|
style = NtUserGetWindowLongW( data->hwnd, GWL_STYLE );
|
||||||
if (style & WS_MINIMIZE)
|
if (style & WS_MINIMIZE)
|
||||||
new_state |= data->net_wm_state & ((1 << NET_WM_STATE_FULLSCREEN)|(1 << NET_WM_STATE_MAXIMIZED));
|
new_state |= data->net_wm_state & ((1 << NET_WM_STATE_FULLSCREEN)|(1 << NET_WM_STATE_MAXIMIZED));
|
||||||
if (is_window_rect_full_screen( &data->whole_rect ))
|
if (NtUserIsWindowRectFullScreen( &data->whole_rect ))
|
||||||
{
|
{
|
||||||
if ((style & WS_MAXIMIZE) && (style & WS_CAPTION) == WS_CAPTION)
|
if ((style & WS_MAXIMIZE) && (style & WS_CAPTION) == WS_CAPTION)
|
||||||
new_state |= (1 << NET_WM_STATE_MAXIMIZED);
|
new_state |= (1 << NET_WM_STATE_MAXIMIZED);
|
||||||
|
@ -2511,7 +2483,7 @@ void X11DRV_WindowPosChanged( HWND hwnd, HWND insert_after, UINT swp_flags,
|
||||||
{
|
{
|
||||||
release_win_data( data );
|
release_win_data( data );
|
||||||
unmap_window( hwnd );
|
unmap_window( hwnd );
|
||||||
if (is_window_rect_full_screen( &old_window_rect )) reset_clipping_window();
|
if (NtUserIsWindowRectFullScreen( &old_window_rect )) reset_clipping_window();
|
||||||
if (!(data = get_win_data( hwnd ))) return;
|
if (!(data = get_win_data( hwnd ))) return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -694,7 +694,6 @@ typedef int (*x11drv_error_callback)( Display *display, XErrorEvent *event, void
|
||||||
extern void X11DRV_expect_error( Display *display, x11drv_error_callback callback, void *arg ) DECLSPEC_HIDDEN;
|
extern void X11DRV_expect_error( Display *display, x11drv_error_callback callback, void *arg ) DECLSPEC_HIDDEN;
|
||||||
extern int X11DRV_check_error(void) DECLSPEC_HIDDEN;
|
extern int X11DRV_check_error(void) DECLSPEC_HIDDEN;
|
||||||
extern void X11DRV_X_to_window_rect( struct x11drv_win_data *data, RECT *rect, int x, int y, int cx, int cy ) DECLSPEC_HIDDEN;
|
extern void X11DRV_X_to_window_rect( struct x11drv_win_data *data, RECT *rect, int x, int y, int cx, int cy ) DECLSPEC_HIDDEN;
|
||||||
extern BOOL is_window_rect_full_screen( const RECT *rect ) DECLSPEC_HIDDEN;
|
|
||||||
extern POINT virtual_screen_to_root( INT x, INT y ) DECLSPEC_HIDDEN;
|
extern POINT virtual_screen_to_root( INT x, INT y ) DECLSPEC_HIDDEN;
|
||||||
extern POINT root_to_virtual_screen( INT x, INT y ) DECLSPEC_HIDDEN;
|
extern POINT root_to_virtual_screen( INT x, INT y ) DECLSPEC_HIDDEN;
|
||||||
extern RECT get_host_primary_monitor_rect(void) DECLSPEC_HIDDEN;
|
extern RECT get_host_primary_monitor_rect(void) DECLSPEC_HIDDEN;
|
||||||
|
|
|
@ -642,6 +642,7 @@ enum
|
||||||
NtUserCallOneParam_GetSysColorPen,
|
NtUserCallOneParam_GetSysColorPen,
|
||||||
NtUserCallOneParam_GetSystemMetrics,
|
NtUserCallOneParam_GetSystemMetrics,
|
||||||
NtUserCallOneParam_GetVirtualScreenRect,
|
NtUserCallOneParam_GetVirtualScreenRect,
|
||||||
|
NtUserCallOneParam_IsWindowRectFullScreen,
|
||||||
NtUserCallOneParam_MessageBeep,
|
NtUserCallOneParam_MessageBeep,
|
||||||
NtUserCallOneParam_RealizePalette,
|
NtUserCallOneParam_RealizePalette,
|
||||||
/* temporary exports */
|
/* temporary exports */
|
||||||
|
@ -732,6 +733,11 @@ static inline RECT NtUserGetVirtualScreenRect(void)
|
||||||
return virtual;
|
return virtual;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline BOOL NtUserIsWindowRectFullScreen( const RECT *rect )
|
||||||
|
{
|
||||||
|
return NtUserCallOneParam( (UINT_PTR)rect, NtUserCallOneParam_IsWindowRectFullScreen );
|
||||||
|
}
|
||||||
|
|
||||||
static inline BOOL NtUserMessageBeep( UINT i )
|
static inline BOOL NtUserMessageBeep( UINT i )
|
||||||
{
|
{
|
||||||
return NtUserCallOneParam( i, NtUserCallOneParam_MessageBeep );
|
return NtUserCallOneParam( i, NtUserCallOneParam_MessageBeep );
|
||||||
|
|
Loading…
Reference in a new issue