Author: fireball
Date: Thu Aug 13 14:49:49 2009
New Revision: 42653

URL: http://svn.reactos.org/svn/reactos?rev=42653&view=rev
Log:
- Intersect cursor clipping rectangle with virtual screen rectangle to get a 
real clipping. Now mouse cursor movements are fully clipped as expected.
- Update windows Z order when window position changed. Experimental.

Modified:
    branches/arwinss/reactos/dll/win32/winent.drv/userdrv.c

Modified: branches/arwinss/reactos/dll/win32/winent.drv/userdrv.c
URL: 
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winent.drv/userdrv.c?rev=42653&r1=42652&r2=42653&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/winent.drv/userdrv.c [iso-8859-1] 
(original)
+++ branches/arwinss/reactos/dll/win32/winent.drv/userdrv.c [iso-8859-1] Thu 
Aug 13 14:49:49 2009
@@ -280,7 +280,19 @@
 
 BOOL CDECL RosDrv_ClipCursor( LPCRECT clip )
 {
-    return RosUserClipCursor( clip );
+    RECT rcScreen, cursor_clip;
+
+    /* Make up virtual screen rectangle*/
+    rcScreen.left = 0; rcScreen.top = 0;
+    rcScreen.right  = GetSystemMetrics(SM_CXVIRTUALSCREEN);
+    rcScreen.bottom = GetSystemMetrics(SM_CYVIRTUALSCREEN);
+
+    /* Intersect with screen rectangle */
+    if (!IntersectRect( &cursor_clip, &rcScreen, clip ))
+        return RosUserClipCursor(&rcScreen);
+
+    /* Set clipping */
+    return RosUserClipCursor( &cursor_clip );
 }
 
 BOOL CDECL RosDrv_GetScreenSaveActive(void)
@@ -863,6 +875,8 @@
             move_window_bits( data, &valid_rects[1], &valid_rects[0], 
&old_client_rect );
         }
     }
+
+    RosDrv_UpdateZOrder(hwnd, visible_rect);
 }
 
 /* EOF */


Reply via email to