Alexandre Julliard : winex11: Get rid of direct accesses to the window structure in the drag&drop code.

Alexandre Julliard julliard at winehq.org
Fri Feb 29 06:16:56 CST 2008


Module: wine
Branch: master
Commit: 68fa3524f8ad0a27bb4025b219f09dda476504cf
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=68fa3524f8ad0a27bb4025b219f09dda476504cf

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Feb 28 20:02:31 2008 +0100

winex11: Get rid of direct accesses to the window structure in the drag&drop code.

---

 dlls/winex11.drv/event.c |   34 +++++++++++++---------------------
 1 files changed, 13 insertions(+), 21 deletions(-)

diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c
index 01dfc6d..30f0c57 100644
--- a/dlls/winex11.drv/event.c
+++ b/dlls/winex11.drv/event.c
@@ -44,7 +44,6 @@
 #include "winuser.h"
 #include "wingdi.h"
 
-#include "win.h"
 #include "x11drv.h"
 
 /* avoid conflict with field names in included win32 headers */
@@ -728,6 +727,7 @@ static HWND find_drop_window( HWND hQueryWnd, LPPOINT lpPt )
  */
 static void EVENT_DropFromOffiX( HWND hWnd, XClientMessageEvent *event )
 {
+    struct x11drv_win_data *data;
     unsigned long	data_length;
     unsigned long	aux_long;
     unsigned char*	p_data = NULL;
@@ -735,7 +735,6 @@ static void EVENT_DropFromOffiX( HWND hWnd, XClientMessageEvent *event )
     int			x, y, dummy;
     BOOL	        bAccept;
     Window		win, w_aux_root, w_aux_child;
-    WND*                pWnd;
     HWND		hScope = hWnd;
 
     win = X11DRV_get_whole_window(hWnd);
@@ -746,14 +745,14 @@ static void EVENT_DropFromOffiX( HWND hWnd, XClientMessageEvent *event )
     y += virtual_screen_rect.top;
     wine_tsx11_unlock();
 
-    pWnd = WIN_GetPtr(hWnd);
+    if (!(data = X11DRV_get_win_data( hWnd ))) return;
 
     /* find out drop point and drop window */
     if( x < 0 || y < 0 ||
-        x > (pWnd->rectWindow.right - pWnd->rectWindow.left) ||
-        y > (pWnd->rectWindow.bottom - pWnd->rectWindow.top) )
+        x > (data->whole_rect.right - data->whole_rect.left) ||
+        y > (data->whole_rect.bottom - data->whole_rect.top) )
     {   
-	bAccept = pWnd->dwExStyle & WS_EX_ACCEPTFILES; 
+	bAccept = GetWindowLongW( hWnd, GWL_EXSTYLE ) & WS_EX_ACCEPTFILES;
 	x = 0;
 	y = 0; 
     }
@@ -773,7 +772,6 @@ static void EVENT_DropFromOffiX( HWND hWnd, XClientMessageEvent *event )
 	    bAccept = FALSE;
 	}
     }
-    WIN_ReleasePtr(pWnd);
 
     if (!bAccept) return;
 
@@ -807,17 +805,11 @@ static void EVENT_DropFromOffiX( HWND hWnd, XClientMessageEvent *event )
 
             if( lpDrop )
             {
-                WND *pDropWnd = WIN_GetPtr( hScope );
                 lpDrop->pFiles = sizeof(DROPFILES);
                 lpDrop->pt.x = x;
                 lpDrop->pt.y = y;
-                lpDrop->fNC =
-                    ( x < (pDropWnd->rectClient.left - pDropWnd->rectWindow.left)  ||
-                      y < (pDropWnd->rectClient.top - pDropWnd->rectWindow.top)    ||
-                      x > (pDropWnd->rectClient.right - pDropWnd->rectWindow.left) ||
-                      y > (pDropWnd->rectClient.bottom - pDropWnd->rectWindow.top) );
+                lpDrop->fNC = FALSE;
                 lpDrop->fWide = FALSE;
-                WIN_ReleasePtr(pDropWnd);
                 p_drop = (char *)(lpDrop + 1);
                 p = (char *)p_data;
                 while(*p)
@@ -846,6 +838,7 @@ static void EVENT_DropFromOffiX( HWND hWnd, XClientMessageEvent *event )
  */
 static void EVENT_DropURLs( HWND hWnd, XClientMessageEvent *event )
 {
+  struct x11drv_win_data *win_data;
   unsigned long	data_length;
   unsigned long	aux_long, drop_len = 0;
   unsigned char	*p_data = NULL; /* property data */
@@ -904,19 +897,18 @@ static void EVENT_DropURLs( HWND hWnd, XClientMessageEvent *event )
       hDrop = GlobalAlloc( GMEM_SHARE, drop_len );
       lpDrop = (DROPFILES *) GlobalLock( hDrop );
 
-      if( lpDrop ) {
-          WND *pDropWnd = WIN_GetPtr( hWnd );
+      if( lpDrop && (win_data = X11DRV_get_win_data( hWnd )))
+      {
 	  lpDrop->pFiles = sizeof(DROPFILES);
 	  lpDrop->pt.x = x;
 	  lpDrop->pt.y = y;
 	  lpDrop->fNC =
-	    ( x < (pDropWnd->rectClient.left - pDropWnd->rectWindow.left)  ||
-	      y < (pDropWnd->rectClient.top - pDropWnd->rectWindow.top)    ||
-	      x > (pDropWnd->rectClient.right - pDropWnd->rectWindow.left) ||
-	      y > (pDropWnd->rectClient.bottom - pDropWnd->rectWindow.top) );
+	    ( x < (win_data->client_rect.left - win_data->whole_rect.left)  ||
+	      y < (win_data->client_rect.top - win_data->whole_rect.top)    ||
+	      x > (win_data->client_rect.right - win_data->whole_rect.left) ||
+	      y > (win_data->client_rect.bottom - win_data->whole_rect.top) );
 	  lpDrop->fWide = FALSE;
 	  p_drop = (char*)(lpDrop + 1);
-          WIN_ReleasePtr(pDropWnd);
       }
 
       /* create message content */




More information about the wine-cvs mailing list