Author: fireball Date: Fri Apr 23 18:38:28 2010 New Revision: 47002
URL: http://svn.reactos.org/svn/reactos?rev=47002&view=rev Log: - Properly convert region coordinates in SwmInvalidateRegion. This gives a substantial visibility improvement: now windows properly repaint themselves when changing focus.
Modified: branches/arwinss/reactos/subsystems/win32/win32k/swm/winman.c branches/arwinss/reactos/subsystems/win32/win32k/wine/window.c
Modified: branches/arwinss/reactos/subsystems/win32/win32k/swm/winman.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/subsystems/win32... ============================================================================== --- branches/arwinss/reactos/subsystems/win32/win32k/swm/winman.c [iso-8859-1] (original) +++ branches/arwinss/reactos/subsystems/win32/win32k/swm/winman.c [iso-8859-1] Fri Apr 23 18:38:28 2010 @@ -18,6 +18,7 @@ #include <debug.h>
/*static*/ inline struct window *get_window( user_handle_t handle ); +inline void client_to_screen( struct window *win, int *x, int *y ); void redraw_window( struct window *win, struct region *region, int frame, unsigned int flags ); void req_update_window_zorder( const struct update_window_zorder_request *req, struct update_window_zorder_reply *reply );
@@ -62,6 +63,7 @@ struct update_window_zorder_request req; struct update_window_zorder_reply reply; struct region *ClientRegion; + int client_left = 0, client_top = 0; UINT i;
ClientRegion = create_empty_region(); @@ -98,7 +100,8 @@ //DbgPrint("\n");
/* Convert region to client coordinates */ - offset_region(ClientRegion, -Window->Window.left, -Window->Window.top); + client_to_screen( Win, &client_left, &client_top ); + offset_region(ClientRegion, -client_left, -client_top);
/* Redraw window */ redraw_window(Win, ClientRegion, 1, RDW_INVALIDATE | RDW_ERASE | RDW_FRAME | RDW_ALLCHILDREN );
Modified: branches/arwinss/reactos/subsystems/win32/win32k/wine/window.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/subsystems/win32... ============================================================================== --- branches/arwinss/reactos/subsystems/win32/win32k/wine/window.c [iso-8859-1] (original) +++ branches/arwinss/reactos/subsystems/win32/win32k/wine/window.c [iso-8859-1] Fri Apr 23 18:38:28 2010 @@ -810,7 +810,7 @@
/* convert coordinates from client to screen coords */ -static inline void client_to_screen( struct window *win, int *x, int *y ) +/*static*/ inline void client_to_screen( struct window *win, int *x, int *y ) { for ( ; win && !is_desktop_window(win); win = win->parent) {