mirror of
https://github.com/reactos/wine.git
synced 2024-11-25 20:59:54 +00:00
winex11: Ignore the specified owner if it's a zero-size window.
Go back to not mapping zero-size windows.
This commit is contained in:
parent
617e5162a2
commit
8a5f578223
@ -127,6 +127,9 @@ static BOOL is_window_managed( HWND hwnd, UINT swp_flags, const RECT *window_rec
|
||||
*/
|
||||
static BOOL is_window_rect_mapped( const RECT *rect )
|
||||
{
|
||||
/* don't map if rect is empty */
|
||||
if (IsRectEmpty( rect )) return FALSE;
|
||||
|
||||
/* don't map if rect is off-screen */
|
||||
if (rect->left >= virtual_screen_rect.right ||
|
||||
rect->top >= virtual_screen_rect.bottom ||
|
||||
@ -152,6 +155,19 @@ static inline BOOL is_window_resizable( struct x11drv_win_data *data, DWORD styl
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* get_window_owner
|
||||
*/
|
||||
static HWND get_window_owner( HWND hwnd )
|
||||
{
|
||||
RECT rect;
|
||||
HWND owner = GetWindow( hwnd, GW_OWNER );
|
||||
/* ignore the zero-size owners used by Delphi apps */
|
||||
if (owner && GetWindowRect( owner, &rect ) && IsRectEmpty( &rect )) owner = 0;
|
||||
return owner;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* get_mwm_decorations
|
||||
*/
|
||||
@ -869,7 +885,7 @@ static void set_wm_hints( Display *display, struct x11drv_win_data *data )
|
||||
{
|
||||
style = GetWindowLongW( data->hwnd, GWL_STYLE );
|
||||
ex_style = GetWindowLongW( data->hwnd, GWL_EXSTYLE );
|
||||
owner = GetWindow( data->hwnd, GW_OWNER );
|
||||
owner = get_window_owner( data->hwnd );
|
||||
}
|
||||
|
||||
/* transient for hint */
|
||||
@ -964,7 +980,7 @@ void update_net_wm_states( Display *display, struct x11drv_win_data *data )
|
||||
new_state |= (1 << NET_WM_STATE_ABOVE);
|
||||
if (ex_style & WS_EX_TOOLWINDOW)
|
||||
new_state |= (1 << NET_WM_STATE_SKIP_TASKBAR) | (1 << NET_WM_STATE_SKIP_PAGER);
|
||||
if (!(ex_style & WS_EX_APPWINDOW) && GetWindow( data->hwnd, GW_OWNER ))
|
||||
if (!(ex_style & WS_EX_APPWINDOW) && get_window_owner( data->hwnd ))
|
||||
new_state |= (1 << NET_WM_STATE_SKIP_TASKBAR);
|
||||
|
||||
if (!data->mapped) /* set the _NET_WM_STATE atom directly */
|
||||
|
Loading…
Reference in New Issue
Block a user