winex11.drv: Use a helper to retrieve the decoration rect for managed windows.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
feature/deterministic
Gabriel Ivăncescu 2020-05-19 15:18:47 +03:00 committed by Alexandre Julliard
parent 55ba364837
commit df0d8ac5be
1 changed files with 20 additions and 9 deletions

View File

@ -1154,19 +1154,16 @@ void make_window_embedded( struct x11drv_win_data *data )
/***********************************************************************
* X11DRV_window_to_X_rect
*
* Convert a rect from client to X window coordinates
* get_decoration_rect
*/
static void X11DRV_window_to_X_rect( struct x11drv_win_data *data, RECT *rect,
const RECT *window_rect, const RECT *client_rect )
static void get_decoration_rect( struct x11drv_win_data *data, RECT *rect,
const RECT *window_rect, const RECT *client_rect )
{
DWORD style, ex_style, style_mask = 0, ex_style_mask = 0;
unsigned long decor;
RECT rc;
SetRectEmpty( rect );
if (!data->managed) return;
if (IsRectEmpty( rect )) return;
style = GetWindowLongW( data->hwnd, GWL_STYLE );
ex_style = GetWindowLongW( data->hwnd, GWL_EXSTYLE );
@ -1179,9 +1176,23 @@ static void X11DRV_window_to_X_rect( struct x11drv_win_data *data, RECT *rect,
ex_style_mask |= WS_EX_DLGMODALFRAME;
}
SetRectEmpty( &rc );
AdjustWindowRectEx( &rc, style & style_mask, FALSE, ex_style & ex_style_mask );
AdjustWindowRectEx( rect, style & style_mask, FALSE, ex_style & ex_style_mask );
}
/***********************************************************************
* X11DRV_window_to_X_rect
*
* Convert a rect from client to X window coordinates
*/
static void X11DRV_window_to_X_rect( struct x11drv_win_data *data, RECT *rect,
const RECT *window_rect, const RECT *client_rect )
{
RECT rc;
if (IsRectEmpty( rect )) return;
get_decoration_rect( data, &rc, window_rect, client_rect );
rect->left -= rc.left;
rect->right -= rc.right;
rect->top -= rc.top;