[ros-diffs] [fireball] 47002: - Properly convert region coordinates in SwmInvalidateRegion. This gives a substantial visibility improvement: now windows properly repaint themselves when changing focus.

fireball at svn.reactos.org fireball at svn.reactos.org
Fri Apr 23 18:38:29 CEST 2010


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/win32k/swm/winman.c?rev=47002&r1=47001&r2=47002&view=diff
==============================================================================
--- 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/win32k/wine/window.c?rev=47002&r1=47001&r2=47002&view=diff
==============================================================================
--- 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)
     {




More information about the Ros-diffs mailing list