Commit 5defa499 authored by Alexandre Julliard's avatar Alexandre Julliard

Moved update region handling to the server.

parent 10a6c560
......@@ -38,11 +38,12 @@ WINE_DEFAULT_DEBUG_CHANNEL(ttydrv);
(SWP_AGG_NOPOSCHANGE | SWP_FRAMECHANGED | SWP_HIDEWINDOW | SWP_SHOWWINDOW)
/***********************************************************************
* set_window_rectangles
* set_window_pos
*
* Set the window and client rectangles.
* Set a window position and Z order.
*/
static void set_window_rectangles( HWND hwnd, const RECT *rectWindow, const RECT *rectClient )
static void set_window_pos( HWND hwnd, HWND insert_after, const RECT *rectWindow,
const RECT *rectClient, UINT swp_flags, UINT wvr_flags )
{
WND *win = WIN_GetPtr( hwnd );
BOOL ret;
......@@ -53,9 +54,13 @@ static void set_window_rectangles( HWND hwnd, const RECT *rectWindow, const RECT
if (IsWindow( hwnd )) ERR( "cannot set rectangles of other process window %p\n", hwnd );
return;
}
SERVER_START_REQ( set_window_rectangles )
SERVER_START_REQ( set_window_pos )
{
req->handle = hwnd;
req->top_win = 0;
req->previous = insert_after;
req->flags = swp_flags;
req->redraw_flags = wvr_flags;
req->window.left = rectWindow->left;
req->window.top = rectWindow->top;
req->window.right = rectWindow->right;
......@@ -95,7 +100,7 @@ BOOL TTYDRV_CreateWindow( HWND hwnd, CREATESTRUCTA *cs, BOOL unicode )
/* initialize the dimensions before sending WM_GETMINMAXINFO */
SetRect( &rect, cs->x, cs->y, cs->x + cs->cx, cs->y + cs->cy );
set_window_rectangles( hwnd, &rect, &rect );
set_window_pos( hwnd, 0, &rect, &rect, SWP_NOZORDER, 0 );
if (!wndPtr->parent) /* desktop window */
{
......@@ -483,6 +488,7 @@ BOOL TTYDRV_SetWindowPos( WINDOWPOS *winpos )
{
WND *wndPtr;
RECT newWindowRect, newClientRect;
UINT wvrFlags = 0;
BOOL retvalue;
HWND hwndActive = GetForegroundWindow();
......@@ -620,7 +626,7 @@ BOOL TTYDRV_SetWindowPos( WINDOWPOS *winpos )
params.lppos = &winposCopy;
winposCopy = *winpos;
SendMessageW( winpos->hwnd, WM_NCCALCSIZE, TRUE, (LPARAM)&params );
wvrFlags = SendMessageW( winpos->hwnd, WM_NCCALCSIZE, TRUE, (LPARAM)&params );
TRACE( "%ld,%ld-%ld,%ld\n", params.rgrc[0].left, params.rgrc[0].top,
params.rgrc[0].right, params.rgrc[0].bottom );
......@@ -643,15 +649,10 @@ BOOL TTYDRV_SetWindowPos( WINDOWPOS *winpos )
winpos->flags &= ~SWP_NOCLIENTSIZE;
}
if(!(winpos->flags & SWP_NOZORDER) && winpos->hwnd != winpos->hwndInsertAfter)
{
HWND parent = GetAncestor( winpos->hwnd, GA_PARENT );
if (parent) WIN_LinkWindow( winpos->hwnd, parent, winpos->hwndInsertAfter );
}
/* FIXME: actually do something with WVR_VALIDRECTS */
set_window_rectangles( winpos->hwnd, &newWindowRect, &newClientRect );
set_window_pos( winpos->hwnd, winpos->hwndInsertAfter,
&newWindowRect, &newClientRect, winpos->flags, wvrFlags );
if( winpos->flags & SWP_SHOWWINDOW )
WIN_SetStyle( winpos->hwnd, wndPtr->dwStyle | WS_VISIBLE );
......
......@@ -740,49 +740,6 @@ void X11DRV_register_window( Display *display, HWND hwnd, struct x11drv_win_data
}
/***********************************************************************
* X11DRV_set_window_rectangles
*
* Set the window and client rectangles.
*/
void X11DRV_set_window_rectangles( HWND hwnd, const RECT *rectWindow, const RECT *rectClient )
{
WND *win = WIN_GetPtr( hwnd );
BOOL ret;
if (!win) return;
if (win == WND_OTHER_PROCESS)
{
if (IsWindow( hwnd )) ERR( "cannot set rectangles of other process window %p\n", hwnd );
return;
}
SERVER_START_REQ( set_window_rectangles )
{
req->handle = hwnd;
req->window.left = rectWindow->left;
req->window.top = rectWindow->top;
req->window.right = rectWindow->right;
req->window.bottom = rectWindow->bottom;
req->client.left = rectClient->left;
req->client.top = rectClient->top;
req->client.right = rectClient->right;
req->client.bottom = rectClient->bottom;
ret = !wine_server_call( req );
}
SERVER_END_REQ;
if (ret)
{
win->rectWindow = *rectWindow;
win->rectClient = *rectClient;
TRACE( "win %p window (%ld,%ld)-(%ld,%ld) client (%ld,%ld)-(%ld,%ld)\n", hwnd,
rectWindow->left, rectWindow->top, rectWindow->right, rectWindow->bottom,
rectClient->left, rectClient->top, rectClient->right, rectClient->bottom );
}
WIN_ReleasePtr( win );
}
/**********************************************************************
* create_desktop
*/
......@@ -1013,6 +970,7 @@ BOOL X11DRV_CreateWindow( HWND hwnd, CREATESTRUCTA *cs, BOOL unicode )
Display *display = thread_display();
WND *wndPtr;
struct x11drv_win_data *data;
HWND insert_after;
RECT rect;
CBT_CREATEWNDA cbtc;
BOOL ret = FALSE;
......@@ -1041,7 +999,7 @@ BOOL X11DRV_CreateWindow( HWND hwnd, CREATESTRUCTA *cs, BOOL unicode )
/* initialize the dimensions before sending WM_GETMINMAXINFO */
SetRect( &rect, cs->x, cs->y, cs->x + cs->cx, cs->y + cs->cy );
X11DRV_set_window_rectangles( hwnd, &rect, &rect );
X11DRV_set_window_pos( hwnd, 0, &rect, &rect, SWP_NOZORDER, 0 );
if (!wndPtr->parent)
{
......@@ -1082,8 +1040,7 @@ BOOL X11DRV_CreateWindow( HWND hwnd, CREATESTRUCTA *cs, BOOL unicode )
if (!(wndPtr = WIN_GetPtr( hwnd ))) return FALSE;
SetRect( &rect, cs->x, cs->y, cs->x + cs->cx, cs->y + cs->cy );
X11DRV_set_window_rectangles( hwnd, &rect, &rect );
X11DRV_sync_whole_window_position( display, wndPtr, 0 );
X11DRV_set_window_pos( hwnd, 0, &rect, &rect, SWP_NOZORDER, 0 );
}
WIN_ReleasePtr( wndPtr );
......@@ -1109,9 +1066,16 @@ BOOL X11DRV_CreateWindow( HWND hwnd, CREATESTRUCTA *cs, BOOL unicode )
SendMessageW( hwnd, WM_NCCALCSIZE, FALSE, (LPARAM)&rect );
if (!(wndPtr = WIN_GetPtr(hwnd))) return FALSE;
if (rect.left < wndPtr->rectWindow.left) rect.left = wndPtr->rectWindow.left;
if (rect.right > wndPtr->rectWindow.right) rect.right = wndPtr->rectWindow.right;
if (rect.top < wndPtr->rectWindow.top) rect.top = wndPtr->rectWindow.top;
if (rect.bottom > wndPtr->rectWindow.bottom) rect.bottom = wndPtr->rectWindow.bottom;
if (rect.left > rect.right || rect.top > rect.bottom) rect = wndPtr->rectWindow;
X11DRV_set_window_rectangles( hwnd, &wndPtr->rectWindow, &rect );
X11DRV_sync_client_window_position( display, wndPtr );
/* yes, even if the CBT hook was called with HWND_TOP */
insert_after = ((wndPtr->dwStyle & (WS_CHILD|WS_MAXIMIZE)) == WS_CHILD) ? HWND_BOTTOM : HWND_TOP;
X11DRV_set_window_pos( hwnd, insert_after, &wndPtr->rectWindow, &rect, 0, 0 );
X11DRV_register_window( display, hwnd, data );
TRACE( "win %p window %ld,%ld,%ld,%ld client %ld,%ld,%ld,%ld whole %ld,%ld,%ld,%ld X client %ld,%ld,%ld,%ld xwin %x/%x\n",
......@@ -1125,12 +1089,6 @@ BOOL X11DRV_CreateWindow( HWND hwnd, CREATESTRUCTA *cs, BOOL unicode )
data->client_rect.right, data->client_rect.bottom,
(unsigned int)data->whole_window, (unsigned int)data->client_window );
/* yes, even if the CBT hook was called with HWND_TOP */
if ((wndPtr->dwStyle & (WS_CHILD|WS_MAXIMIZE)) == WS_CHILD)
WIN_LinkWindow( hwnd, wndPtr->parent, HWND_BOTTOM );
else
WIN_LinkWindow( hwnd, wndPtr->parent, HWND_TOP );
WIN_ReleasePtr( wndPtr );
if (unicode)
......
......@@ -563,7 +563,8 @@ extern Window X11DRV_create_desktop( XVisualInfo *desktop_vi, const char *geomet
extern void X11DRV_sync_window_style( Display *display, WND *win );
extern int X11DRV_sync_whole_window_position( Display *display, WND *win, int zorder );
extern int X11DRV_sync_client_window_position( Display *display, WND *win );
extern void X11DRV_set_window_rectangles( HWND hwnd, const RECT *rectWindow, const RECT *rectClient );
extern BOOL X11DRV_set_window_pos( HWND hwnd, HWND insert_after, const RECT *rectWindow,
const RECT *rectClient, UINT swp_flags, UINT wvr_flags );
extern void X11DRV_set_wm_hints( Display *display, WND *win );
extern void X11DRV_handle_desktop_resize(unsigned int width, unsigned int height);
......
......@@ -52,7 +52,6 @@ typedef struct tagWND
void *pVScroll; /* Vertical scroll-bar info */
void *pHScroll; /* Horizontal scroll-bar info */
struct tagDCE *dce; /* Window DCE (if CS_OWNDC or CS_CLASSDC) */
HRGN hrgnUpdate; /* Update region */
DWORD dwStyle; /* Window style (from CreateWindow) */
DWORD dwExStyle; /* Extended style (from CreateWindowEx) */
DWORD clsStyle; /* Class style at window creation */
......@@ -78,17 +77,14 @@ typedef struct
} INTERNALPOS, *LPINTERNALPOS;
/* WND flags values */
#define WIN_NEEDS_ERASEBKGND 0x0002 /* WM_ERASEBKGND must be sent to window*/
#define WIN_NEEDS_NCPAINT 0x0004 /* WM_NCPAINT must be sent to window */
#define WIN_RESTORE_MAX 0x0008 /* Maximize when restoring */
#define WIN_INTERNAL_PAINT 0x0010 /* Internal WM_PAINT message pending */
#define WIN_NEED_SIZE 0x0040 /* Internal WM_SIZE is needed */
#define WIN_NCACTIVATED 0x0080 /* last WM_NCACTIVATE was positive */
#define WIN_ISMDICLIENT 0x0100 /* Window is an MDIClient */
#define WIN_ISDIALOG 0x0200 /* Window is a dialog */
#define WIN_ISWIN32 0x0400 /* Understands Win32 messages */
#define WIN_NEEDS_SHOW_OWNEDPOPUP 0x0800 /* WM_SHOWWINDOW:SC_SHOW must be sent in the next ShowOwnedPopup call */
#define WIN_NEEDS_INTERNALSOP 0x1000 /* Window was hidden by WIN_InternalShowOwnedPopups */
#define WIN_RESTORE_MAX 0x0001 /* Maximize when restoring */
#define WIN_NEED_SIZE 0x0002 /* Internal WM_SIZE is needed */
#define WIN_NCACTIVATED 0x0004 /* last WM_NCACTIVATE was positive */
#define WIN_ISMDICLIENT 0x0008 /* Window is an MDIClient */
#define WIN_ISDIALOG 0x0010 /* Window is a dialog */
#define WIN_ISWIN32 0x0020 /* Understands Win32 messages */
#define WIN_NEEDS_SHOW_OWNEDPOPUP 0x0040 /* WM_SHOWWINDOW:SC_SHOW must be sent in the next ShowOwnedPopup call */
#define WIN_NEEDS_INTERNALSOP 0x0080 /* Window was hidden by WIN_InternalShowOwnedPopups */
/* Window functions */
extern WND *WIN_GetPtr( HWND hwnd );
......
......@@ -2551,16 +2551,21 @@ struct get_window_tree_reply
};
struct set_window_rectangles_request
struct set_window_pos_request
{
struct request_header __header;
user_handle_t handle;
user_handle_t top_win;
user_handle_t previous;
unsigned int flags;
unsigned int redraw_flags;
rectangle_t window;
rectangle_t client;
};
struct set_window_rectangles_reply
struct set_window_pos_reply
{
struct reply_header __header;
unsigned int new_style;
};
......@@ -2605,19 +2610,6 @@ struct set_window_text_reply
struct inc_window_paint_count_request
{
struct request_header __header;
user_handle_t handle;
int incr;
};
struct inc_window_paint_count_reply
{
struct reply_header __header;
};
struct get_windows_offset_request
{
struct request_header __header;
......@@ -2676,6 +2668,44 @@ struct set_window_region_reply
struct get_update_region_request
{
struct request_header __header;
user_handle_t window;
unsigned int flags;
};
struct get_update_region_reply
{
struct reply_header __header;
user_handle_t child;
unsigned int flags;
size_t total_size;
/* VARARG(region,rectangles); */
};
#define UPDATE_NONCLIENT 0x01
#define UPDATE_ERASE 0x02
#define UPDATE_PAINT 0x04
#define UPDATE_INTERNALPAINT 0x08
#define UPDATE_ALLCHILDREN 0x10
#define UPDATE_NOCHILDREN 0x20
#define UPDATE_NOREGION 0x40
struct redraw_window_request
{
struct request_header __header;
user_handle_t window;
unsigned int flags;
/* VARARG(region,rectangles); */
};
struct redraw_window_reply
{
struct reply_header __header;
};
struct set_window_property_request
{
struct request_header __header;
......@@ -3246,15 +3276,16 @@ enum request
REQ_get_window_children,
REQ_get_window_children_from_point,
REQ_get_window_tree,
REQ_set_window_rectangles,
REQ_set_window_pos,
REQ_get_window_rectangles,
REQ_get_window_text,
REQ_set_window_text,
REQ_inc_window_paint_count,
REQ_get_windows_offset,
REQ_get_visible_region,
REQ_get_window_region,
REQ_set_window_region,
REQ_get_update_region,
REQ_redraw_window,
REQ_set_window_property,
REQ_remove_window_property,
REQ_get_window_property,
......@@ -3430,15 +3461,16 @@ union generic_request
struct get_window_children_request get_window_children_request;
struct get_window_children_from_point_request get_window_children_from_point_request;
struct get_window_tree_request get_window_tree_request;
struct set_window_rectangles_request set_window_rectangles_request;
struct set_window_pos_request set_window_pos_request;
struct get_window_rectangles_request get_window_rectangles_request;
struct get_window_text_request get_window_text_request;
struct set_window_text_request set_window_text_request;
struct inc_window_paint_count_request inc_window_paint_count_request;
struct get_windows_offset_request get_windows_offset_request;
struct get_visible_region_request get_visible_region_request;
struct get_window_region_request get_window_region_request;
struct set_window_region_request set_window_region_request;
struct get_update_region_request get_update_region_request;
struct redraw_window_request redraw_window_request;
struct set_window_property_request set_window_property_request;
struct remove_window_property_request remove_window_property_request;
struct get_window_property_request get_window_property_request;
......@@ -3612,15 +3644,16 @@ union generic_reply
struct get_window_children_reply get_window_children_reply;
struct get_window_children_from_point_reply get_window_children_from_point_reply;
struct get_window_tree_reply get_window_tree_reply;
struct set_window_rectangles_reply set_window_rectangles_reply;
struct set_window_pos_reply set_window_pos_reply;
struct get_window_rectangles_reply get_window_rectangles_reply;
struct get_window_text_reply get_window_text_reply;
struct set_window_text_reply set_window_text_reply;
struct inc_window_paint_count_reply inc_window_paint_count_reply;
struct get_windows_offset_reply get_windows_offset_reply;
struct get_visible_region_reply get_visible_region_reply;
struct get_window_region_reply get_window_region_reply;
struct set_window_region_reply set_window_region_reply;
struct get_update_region_reply get_update_region_reply;
struct redraw_window_reply redraw_window_reply;
struct set_window_property_reply set_window_property_reply;
struct remove_window_property_reply remove_window_property_reply;
struct get_window_property_reply get_window_property_reply;
......@@ -3648,6 +3681,6 @@ union generic_reply
struct set_global_windows_reply set_global_windows_reply;
};
#define SERVER_PROTOCOL_VERSION 151
#define SERVER_PROTOCOL_VERSION 152
#endif /* __WINE_WINE_SERVER_PROTOCOL_H */
......@@ -1805,11 +1805,17 @@ enum message_type
user_handle_t last_child; /* last child */
@END
/* Set the window and client rectangles of a window */
@REQ(set_window_rectangles)
/* Set the position and Z order of a window */
@REQ(set_window_pos)
user_handle_t handle; /* handle to the window */
user_handle_t top_win; /* top window to clip against */
user_handle_t previous; /* previous window in Z order */
unsigned int flags; /* SWP_* flags */
unsigned int redraw_flags; /* WVR_* flags */
rectangle_t window; /* window rectangle */
rectangle_t client; /* client rectangle */
@REPLY
unsigned int new_style; /* new window style */
@END
......@@ -1837,13 +1843,6 @@ enum message_type
@END
/* Increment the window paint count */
@REQ(inc_window_paint_count)
user_handle_t handle; /* handle to the window */
int incr; /* increment (can be negative) */
@END
/* Get the coordinates offset between two windows */
@REQ(get_windows_offset)
user_handle_t from; /* handle to the first window */
......@@ -1881,6 +1880,33 @@ enum message_type
@END
/* Get the window update region */
@REQ(get_update_region)
user_handle_t window; /* handle to the window */
unsigned int flags; /* update flags (see below) */
@REPLY
user_handle_t child; /* child to repaint (or window itself) */
unsigned int flags; /* resulting update flags (see below) */
size_t total_size; /* total size of the resulting region */
VARARG(region,rectangles); /* list of rectangles for the region */
@END
#define UPDATE_NONCLIENT 0x01 /* get region for repainting non-client area */
#define UPDATE_ERASE 0x02 /* get region for erasing client area */
#define UPDATE_PAINT 0x04 /* get region for painting client area */
#define UPDATE_INTERNALPAINT 0x08 /* get region if internal paint is pending */
#define UPDATE_ALLCHILDREN 0x10 /* force repaint of all children */
#define UPDATE_NOCHILDREN 0x20 /* don't try to repaint any children */
#define UPDATE_NOREGION 0x40 /* don't return a region, only the flags */
/* Mark parts of a window as needing a redraw */
@REQ(redraw_window)
user_handle_t window; /* handle to the window */
unsigned int flags; /* RDW_* flags */
VARARG(region,rectangles); /* list of rectangles for the region */
@END
/* Set a window property */
@REQ(set_window_property)
user_handle_t window; /* handle to the window */
......
......@@ -246,15 +246,16 @@ DECL_HANDLER(get_window_parents);
DECL_HANDLER(get_window_children);
DECL_HANDLER(get_window_children_from_point);
DECL_HANDLER(get_window_tree);
DECL_HANDLER(set_window_rectangles);
DECL_HANDLER(set_window_pos);
DECL_HANDLER(get_window_rectangles);
DECL_HANDLER(get_window_text);
DECL_HANDLER(set_window_text);
DECL_HANDLER(inc_window_paint_count);
DECL_HANDLER(get_windows_offset);
DECL_HANDLER(get_visible_region);
DECL_HANDLER(get_window_region);
DECL_HANDLER(set_window_region);
DECL_HANDLER(get_update_region);
DECL_HANDLER(redraw_window);
DECL_HANDLER(set_window_property);
DECL_HANDLER(remove_window_property);
DECL_HANDLER(get_window_property);
......@@ -429,15 +430,16 @@ static const req_handler req_handlers[REQ_NB_REQUESTS] =
(req_handler)req_get_window_children,
(req_handler)req_get_window_children_from_point,
(req_handler)req_get_window_tree,
(req_handler)req_set_window_rectangles,
(req_handler)req_set_window_pos,
(req_handler)req_get_window_rectangles,
(req_handler)req_get_window_text,
(req_handler)req_set_window_text,
(req_handler)req_inc_window_paint_count,
(req_handler)req_get_windows_offset,
(req_handler)req_get_visible_region,
(req_handler)req_get_window_region,
(req_handler)req_set_window_region,
(req_handler)req_get_update_region,
(req_handler)req_redraw_window,
(req_handler)req_set_window_property,
(req_handler)req_remove_window_property,
(req_handler)req_get_window_property,
......
......@@ -2149,9 +2149,13 @@ static void dump_get_window_tree_reply( const struct get_window_tree_reply *req
fprintf( stderr, " last_child=%p", req->last_child );
}
static void dump_set_window_rectangles_request( const struct set_window_rectangles_request *req )
static void dump_set_window_pos_request( const struct set_window_pos_request *req )
{
fprintf( stderr, " handle=%p,", req->handle );
fprintf( stderr, " top_win=%p,", req->top_win );
fprintf( stderr, " previous=%p,", req->previous );
fprintf( stderr, " flags=%08x,", req->flags );
fprintf( stderr, " redraw_flags=%08x,", req->redraw_flags );
fprintf( stderr, " window=" );
dump_rectangle( &req->window );
fprintf( stderr, "," );
......@@ -2159,6 +2163,11 @@ static void dump_set_window_rectangles_request( const struct set_window_rectangl
dump_rectangle( &req->client );
}
static void dump_set_window_pos_reply( const struct set_window_pos_reply *req )
{
fprintf( stderr, " new_style=%08x", req->new_style );
}
static void dump_get_window_rectangles_request( const struct get_window_rectangles_request *req )
{
fprintf( stderr, " handle=%p", req->handle );
......@@ -2191,12 +2200,6 @@ static void dump_set_window_text_request( const struct set_window_text_request *
dump_varargs_unicode_str( cur_size );
}
static void dump_inc_window_paint_count_request( const struct inc_window_paint_count_request *req )
{
fprintf( stderr, " handle=%p,", req->handle );
fprintf( stderr, " incr=%d", req->incr );
}
static void dump_get_windows_offset_request( const struct get_windows_offset_request *req )
{
fprintf( stderr, " from=%p,", req->from );
......@@ -2242,6 +2245,29 @@ static void dump_set_window_region_request( const struct set_window_region_reque
dump_varargs_rectangles( cur_size );
}
static void dump_get_update_region_request( const struct get_update_region_request *req )
{
fprintf( stderr, " window=%p,", req->window );
fprintf( stderr, " flags=%08x", req->flags );
}
static void dump_get_update_region_reply( const struct get_update_region_reply *req )
{
fprintf( stderr, " child=%p,", req->child );
fprintf( stderr, " flags=%08x,", req->flags );
fprintf( stderr, " total_size=%d,", req->total_size );
fprintf( stderr, " region=" );
dump_varargs_rectangles( cur_size );
}
static void dump_redraw_window_request( const struct redraw_window_request *req )
{
fprintf( stderr, " window=%p,", req->window );
fprintf( stderr, " flags=%08x,", req->flags );
fprintf( stderr, " region=" );
dump_varargs_rectangles( cur_size );
}
static void dump_set_window_property_request( const struct set_window_property_request *req )
{
fprintf( stderr, " window=%p,", req->window );
......@@ -2706,15 +2732,16 @@ static const dump_func req_dumpers[REQ_NB_REQUESTS] = {
(dump_func)dump_get_window_children_request,
(dump_func)dump_get_window_children_from_point_request,
(dump_func)dump_get_window_tree_request,
(dump_func)dump_set_window_rectangles_request,
(dump_func)dump_set_window_pos_request,
(dump_func)dump_get_window_rectangles_request,
(dump_func)dump_get_window_text_request,
(dump_func)dump_set_window_text_request,
(dump_func)dump_inc_window_paint_count_request,
(dump_func)dump_get_windows_offset_request,
(dump_func)dump_get_visible_region_request,
(dump_func)dump_get_window_region_request,
(dump_func)dump_set_window_region_request,
(dump_func)dump_get_update_region_request,
(dump_func)dump_redraw_window_request,
(dump_func)dump_set_window_property_request,
(dump_func)dump_remove_window_property_request,
(dump_func)dump_get_window_property_request,
......@@ -2886,15 +2913,16 @@ static const dump_func reply_dumpers[REQ_NB_REQUESTS] = {
(dump_func)dump_get_window_children_reply,
(dump_func)dump_get_window_children_from_point_reply,
(dump_func)dump_get_window_tree_reply,
(dump_func)0,
(dump_func)dump_set_window_pos_reply,
(dump_func)dump_get_window_rectangles_reply,
(dump_func)dump_get_window_text_reply,
(dump_func)0,
(dump_func)0,
(dump_func)dump_get_windows_offset_reply,
(dump_func)dump_get_visible_region_reply,
(dump_func)dump_get_window_region_reply,
(dump_func)0,
(dump_func)dump_get_update_region_reply,
(dump_func)0,
(dump_func)0,
(dump_func)dump_remove_window_property_reply,
(dump_func)dump_get_window_property_reply,
......@@ -3066,15 +3094,16 @@ static const char * const req_names[REQ_NB_REQUESTS] = {
"get_window_children",
"get_window_children_from_point",
"get_window_tree",
"set_window_rectangles",
"set_window_pos",
"get_window_rectangles",
"get_window_text",
"set_window_text",
"inc_window_paint_count",
"get_windows_offset",
"get_visible_region",
"get_window_region",
"set_window_region",
"get_update_region",
"redraw_window",
"set_window_property",
"remove_window_property",
"get_window_property",
......
......@@ -698,7 +698,6 @@ BOOL WIN_CreateDesktopWindow(void)
pWndDesktop->parent = 0;
pWndDesktop->owner = 0;
pWndDesktop->text = NULL;
pWndDesktop->hrgnUpdate = 0;
pWndDesktop->pVScroll = NULL;
pWndDesktop->pHScroll = NULL;
pWndDesktop->helpContext = 0;
......@@ -738,7 +737,6 @@ BOOL WIN_CreateDesktopWindow(void)
return FALSE;
}
pWndDesktop->flags |= WIN_NEEDS_ERASEBKGND;
WIN_ReleaseWndPtr( pWndDesktop );
return TRUE;
}
......@@ -1110,7 +1108,6 @@ static HWND WIN_CreateWindowEx( CREATESTRUCTA *cs, ATOM classAtom,
wndPtr->parent = parent;
wndPtr->hInstance = cs->hInstance;
wndPtr->text = NULL;
wndPtr->hrgnUpdate = 0;
wndPtr->dwStyle = cs->style & ~WS_VISIBLE;
wndPtr->dwExStyle = cs->dwExStyle;
wndPtr->wIDmenu = 0;
......@@ -3125,19 +3122,13 @@ BOOL WINAPI FlashWindow( HWND hWnd, BOOL bInvert )
if (wndPtr->dwStyle & WS_MINIMIZE)
{
RedrawWindow( hWnd, 0, 0, RDW_INVALIDATE | RDW_ERASE | RDW_UPDATENOW | RDW_FRAME );
if (bInvert && !(wndPtr->flags & WIN_NCACTIVATED))
{
HDC hDC = GetDC(hWnd);
if (!SendMessageW( hWnd, WM_ERASEBKGND, (WPARAM)hDC, 0 ))
wndPtr->flags |= WIN_NEEDS_ERASEBKGND;
ReleaseDC( hWnd, hDC );
wndPtr->flags |= WIN_NCACTIVATED;
}
else
{
RedrawWindow( hWnd, 0, 0, RDW_INVALIDATE | RDW_ERASE | RDW_UPDATENOW | RDW_FRAME );
wndPtr->flags &= ~WIN_NCACTIVATED;
}
WIN_ReleaseWndPtr(wndPtr);
......
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