Commit 8a5f5782 authored by Alexandre Julliard's avatar Alexandre Julliard

winex11: Ignore the specified owner if it's a zero-size window.

Go back to not mapping zero-size windows.
parent 617e5162
...@@ -127,6 +127,9 @@ static BOOL is_window_managed( HWND hwnd, UINT swp_flags, const RECT *window_rec ...@@ -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 ) 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 */ /* don't map if rect is off-screen */
if (rect->left >= virtual_screen_rect.right || if (rect->left >= virtual_screen_rect.right ||
rect->top >= virtual_screen_rect.bottom || rect->top >= virtual_screen_rect.bottom ||
...@@ -153,6 +156,19 @@ static inline BOOL is_window_resizable( struct x11drv_win_data *data, DWORD styl ...@@ -153,6 +156,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 * get_mwm_decorations
*/ */
static unsigned long get_mwm_decorations( struct x11drv_win_data *data, static unsigned long get_mwm_decorations( struct x11drv_win_data *data,
...@@ -869,7 +885,7 @@ static void set_wm_hints( Display *display, struct x11drv_win_data *data ) ...@@ -869,7 +885,7 @@ static void set_wm_hints( Display *display, struct x11drv_win_data *data )
{ {
style = GetWindowLongW( data->hwnd, GWL_STYLE ); style = GetWindowLongW( data->hwnd, GWL_STYLE );
ex_style = GetWindowLongW( data->hwnd, GWL_EXSTYLE ); ex_style = GetWindowLongW( data->hwnd, GWL_EXSTYLE );
owner = GetWindow( data->hwnd, GW_OWNER ); owner = get_window_owner( data->hwnd );
} }
/* transient for hint */ /* transient for hint */
...@@ -964,7 +980,7 @@ void update_net_wm_states( Display *display, struct x11drv_win_data *data ) ...@@ -964,7 +980,7 @@ void update_net_wm_states( Display *display, struct x11drv_win_data *data )
new_state |= (1 << NET_WM_STATE_ABOVE); new_state |= (1 << NET_WM_STATE_ABOVE);
if (ex_style & WS_EX_TOOLWINDOW) if (ex_style & WS_EX_TOOLWINDOW)
new_state |= (1 << NET_WM_STATE_SKIP_TASKBAR) | (1 << NET_WM_STATE_SKIP_PAGER); 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); new_state |= (1 << NET_WM_STATE_SKIP_TASKBAR);
if (!data->mapped) /* set the _NET_WM_STATE atom directly */ if (!data->mapped) /* set the _NET_WM_STATE atom directly */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment