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/win3…
==============================================================================
--- 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/win3…
==============================================================================
--- 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)
{