mirror of
https://gitlab.winehq.org/wine/wine.git
synced 2024-11-21 17:09:06 -07:00
winex11: Use the new window state tracker to get _NET_WM_STATE value.
This commit is contained in:
parent
0dc7e40468
commit
e75192fe72
Notes:
Alexandre Julliard
2024-11-15 22:25:39 +01:00
Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/wine/merge_requests/6820
3 changed files with 5 additions and 12 deletions
|
@ -1168,13 +1168,12 @@ static BOOL X11DRV_ConfigureNotify( HWND hwnd, XEvent *xev )
|
||||||
style = NtUserGetWindowLongW( data->hwnd, GWL_STYLE );
|
style = NtUserGetWindowLongW( data->hwnd, GWL_STYLE );
|
||||||
if ((style & WS_CAPTION) == WS_CAPTION || !data->is_fullscreen)
|
if ((style & WS_CAPTION) == WS_CAPTION || !data->is_fullscreen)
|
||||||
{
|
{
|
||||||
data->net_wm_state = get_window_net_wm_state( event->display, data->whole_window );
|
if ((data->current_state.net_wm_state & (1 << NET_WM_STATE_MAXIMIZED)) && !(style & WS_MAXIMIZE))
|
||||||
if ((data->net_wm_state & (1 << NET_WM_STATE_MAXIMIZED)) && !(style & WS_MAXIMIZE))
|
|
||||||
{
|
{
|
||||||
TRACE( "window %p/%lx is maximized\n", data->hwnd, data->whole_window );
|
TRACE( "window %p/%lx is maximized\n", data->hwnd, data->whole_window );
|
||||||
config_cmd = SC_MAXIMIZE;
|
config_cmd = SC_MAXIMIZE;
|
||||||
}
|
}
|
||||||
else if (!(data->net_wm_state & (1 << NET_WM_STATE_MAXIMIZED)) && (style & WS_MAXIMIZE))
|
else if (!(data->current_state.net_wm_state & (1 << NET_WM_STATE_MAXIMIZED)) && (style & WS_MAXIMIZE))
|
||||||
{
|
{
|
||||||
TRACE( "window %p/%lx is no longer maximized\n", data->hwnd, data->whole_window );
|
TRACE( "window %p/%lx is no longer maximized\n", data->hwnd, data->whole_window );
|
||||||
config_cmd = SC_RESTORE;
|
config_cmd = SC_RESTORE;
|
||||||
|
@ -1294,8 +1293,7 @@ static void handle_wm_state_notify( HWND hwnd, XPropertyEvent *event, BOOL updat
|
||||||
if (data->iconic && data->wm_state == NormalState) /* restore window */
|
if (data->iconic && data->wm_state == NormalState) /* restore window */
|
||||||
{
|
{
|
||||||
data->iconic = FALSE;
|
data->iconic = FALSE;
|
||||||
data->net_wm_state = get_window_net_wm_state( event->display, data->whole_window );
|
if ((style & WS_CAPTION) == WS_CAPTION && (data->current_state.net_wm_state & (1 << NET_WM_STATE_MAXIMIZED)))
|
||||||
if ((style & WS_CAPTION) == WS_CAPTION && (data->net_wm_state & (1 << NET_WM_STATE_MAXIMIZED)))
|
|
||||||
{
|
{
|
||||||
if ((style & WS_MAXIMIZEBOX) && !(style & WS_DISABLED))
|
if ((style & WS_MAXIMIZEBOX) && !(style & WS_DISABLED))
|
||||||
{
|
{
|
||||||
|
|
|
@ -1160,7 +1160,7 @@ static void update_net_wm_fullscreen_monitors( struct x11drv_win_data *data )
|
||||||
long monitors[4];
|
long monitors[4];
|
||||||
XEvent xev;
|
XEvent xev;
|
||||||
|
|
||||||
if (!(data->net_wm_state & (1 << NET_WM_STATE_FULLSCREEN)) || is_virtual_desktop()
|
if (!(data->pending_state.net_wm_state & (1 << NET_WM_STATE_FULLSCREEN)) || is_virtual_desktop()
|
||||||
|| NtUserGetWindowLongW( data->hwnd, GWL_STYLE ) & WS_MINIMIZE)
|
|| NtUserGetWindowLongW( data->hwnd, GWL_STYLE ) & WS_MINIMIZE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1328,7 +1328,7 @@ static 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->pending_state.net_wm_state & ((1 << NET_WM_STATE_FULLSCREEN)|(1 << NET_WM_STATE_MAXIMIZED));
|
||||||
if (data->is_fullscreen)
|
if (data->is_fullscreen)
|
||||||
{
|
{
|
||||||
if ((style & WS_MAXIMIZE) && (style & WS_CAPTION) == WS_CAPTION)
|
if ((style & WS_MAXIMIZE) && (style & WS_CAPTION) == WS_CAPTION)
|
||||||
|
@ -1352,7 +1352,6 @@ static void update_net_wm_states( struct x11drv_win_data *data )
|
||||||
}
|
}
|
||||||
|
|
||||||
window_set_net_wm_state( data, new_state );
|
window_set_net_wm_state( data, new_state );
|
||||||
data->net_wm_state = new_state;
|
|
||||||
update_net_wm_fullscreen_monitors( data );
|
update_net_wm_fullscreen_monitors( data );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1490,7 +1489,6 @@ static void unmap_window( HWND hwnd )
|
||||||
TRACE( "win %p/%lx\n", data->hwnd, data->whole_window );
|
TRACE( "win %p/%lx\n", data->hwnd, data->whole_window );
|
||||||
window_set_wm_state( data, WithdrawnState );
|
window_set_wm_state( data, WithdrawnState );
|
||||||
data->mapped = FALSE;
|
data->mapped = FALSE;
|
||||||
data->net_wm_state = 0;
|
|
||||||
}
|
}
|
||||||
release_win_data( data );
|
release_win_data( data );
|
||||||
}
|
}
|
||||||
|
@ -1613,7 +1611,6 @@ void make_window_embedded( struct x11drv_win_data *data )
|
||||||
{
|
{
|
||||||
/* the window cannot be mapped before being embedded */
|
/* the window cannot be mapped before being embedded */
|
||||||
window_set_wm_state( data, WithdrawnState );
|
window_set_wm_state( data, WithdrawnState );
|
||||||
data->net_wm_state = 0;
|
|
||||||
data->embedded = TRUE;
|
data->embedded = TRUE;
|
||||||
data->managed = TRUE;
|
data->managed = TRUE;
|
||||||
sync_window_style( data );
|
sync_window_style( data );
|
||||||
|
@ -2025,7 +2022,6 @@ static void destroy_whole_window( struct x11drv_win_data *data, BOOL already_des
|
||||||
data->whole_window = data->client_window = 0;
|
data->whole_window = data->client_window = 0;
|
||||||
data->whole_colormap = 0;
|
data->whole_colormap = 0;
|
||||||
data->wm_state = WithdrawnState;
|
data->wm_state = WithdrawnState;
|
||||||
data->net_wm_state = 0;
|
|
||||||
data->mapped = FALSE;
|
data->mapped = FALSE;
|
||||||
|
|
||||||
memset( &data->pending_state, 0, sizeof(data->pending_state) );
|
memset( &data->pending_state, 0, sizeof(data->pending_state) );
|
||||||
|
|
|
@ -634,7 +634,6 @@ struct x11drv_win_data
|
||||||
UINT is_fullscreen : 1; /* is the window visible rect fullscreen */
|
UINT is_fullscreen : 1; /* is the window visible rect fullscreen */
|
||||||
UINT parent_invalid : 1; /* is the parent host window possibly invalid */
|
UINT parent_invalid : 1; /* is the parent host window possibly invalid */
|
||||||
int wm_state; /* current value of the WM_STATE property */
|
int wm_state; /* current value of the WM_STATE property */
|
||||||
DWORD net_wm_state; /* bit mask of active x11drv_net_wm_state values */
|
|
||||||
Window embedder; /* window id of embedder */
|
Window embedder; /* window id of embedder */
|
||||||
Pixmap icon_pixmap;
|
Pixmap icon_pixmap;
|
||||||
Pixmap icon_mask;
|
Pixmap icon_mask;
|
||||||
|
|
Loading…
Reference in a new issue