Ok, the problem happend only when the shelf is stacked on the background.
The attached patch fix it, I'm not sure this is the right way, but seems
that _e_drag_win_matches is not needed by xdnd.

Thanks
Dave


----- "Dave Andreoli" <[EMAIL PROTECTED]> ha scritto:

> This commit has stopped all the xdnd to work both in the shelf and in
> the gadcon  :(
> 
> DaveMDS
> 
> 
> ----- "Enlightenment CVS" <[EMAIL PROTECTED]> ha scritto:
> 
> > Enlightenment CVS committal
> > 
> > Author  : englebass
> > Project : e17
> > Module  : apps/e
> > 
> > Dir     : e17/apps/e/src/bin
> > 
> > 
> > Modified Files:
> >     e_dnd.c 
> > 
> > 
> > Log Message:
> > We don't need to search for window at pointer with xdnd, xdnd
> handles
> > this
> > already.
> > 
> > ===================================================================
> > RCS file: /cvs/e/e17/apps/e/src/bin/e_dnd.c,v
> > retrieving revision 1.75
> > retrieving revision 1.76
> > diff -u -3 -r1.75 -r1.76
> > --- e_dnd.c 15 Jun 2008 12:19:40 -0000      1.75
> > +++ e_dnd.c 15 Jun 2008 12:28:16 -0000      1.76
> > @@ -680,12 +680,8 @@
> >  // win = ecore_x_window_at_xy_with_skip_get(x, y, ignore_win, 2);
> >       }
> >     else
> > -     /* FIXME: this is nasty. every x mouse event we go back to x
> and
> > do
> > -      * a whole bunch of round-trips narrowing down the toplevel
> > window
> > -      * which contains the mouse */
> > -     win = ecore_x_window_shadow_tree_at_xy_with_skip_get(root, x,
> y,
> > NULL, 0);
> > -//     win = ecore_x_window_at_xy_with_skip_get(x, y, NULL, 0);
> > -   
> > +     win = root;
> > +
> >     if (_drag_current)
> >       {
> >     _e_drag_show(_drag_current);
> > @@ -890,24 +886,13 @@
> >  }
> >  
> >  static void
> > -_e_drag_xdnd_end(Ecore_X_Window root, int x, int y)
> > +_e_drag_xdnd_end(Ecore_X_Window win, int x, int y)
> >  {
> >     Evas_List *l;
> >     E_Event_Dnd_Drop ev;
> >     int dx, dy, dw, dh;
> > -   Ecore_X_Window win, ignore_win[2];
> >  
> >     if (!_xdnd) return;
> > -   if (_drag_current)
> > -     {
> > -   ignore_win[0] = _drag_current->evas_win;
> > -   ignore_win[1] = _drag_win;
> > -   win = ecore_x_window_shadow_tree_at_xy_with_skip_get(root, x, y,
> > ignore_win, 2);
> > -// win = ecore_x_window_at_xy_with_skip_get(x, y, ignore_win, 2);
> > -     }
> > -   else
> > -     win = ecore_x_window_shadow_tree_at_xy_with_skip_get(root, x,
> y,
> > NULL, 0);
> > -//     win = ecore_x_window_at_xy_with_skip_get(x, y, NULL, 0);
> >  
> >     ev.data = _xdnd->data;
> >  
> > 
> > 
> > 
> >
> -------------------------------------------------------------------------
> > Check out the new SourceForge.net Marketplace.
> > It's the best place to buy or sell services for
> > just about anything Open Source.
> > http://sourceforge.net/services/buy/index.php
> > _______________________________________________
> > enlightenment-cvs mailing list
> > [EMAIL PROTECTED]
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs
> 
> -------------------------------------------------------------------------
> Check out the new SourceForge.net Marketplace.
> It's the best place to buy or sell services for
> just about anything Open Source.
> http://sourceforge.net/services/buy/index.php
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Index: e_dnd.c
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_dnd.c,v
retrieving revision 1.77
diff -u -u -r1.77 e_dnd.c
--- e_dnd.c	15 Jun 2008 12:30:26 -0000	1.77
+++ e_dnd.c	23 Jun 2008 13:39:51 -0000
@@ -752,7 +752,7 @@
 	     move_ev.y = y - dy;
 	     leave_ev.x = x - dx;
 	     leave_ev.y = y - dy;
-	     if (E_INSIDE(x, y, dx, dy, dw, dh) && _e_drag_win_matches(h, win))
+	     if (E_INSIDE(x, y, dx, dy, dw, dh) /*&& _e_drag_win_matches(h, win)*/)
 	       {
 		  if (!h->entered)
 		    {
@@ -910,8 +910,8 @@
 	     _e_drag_coords_update(h, &dx, &dy, &dw, &dh);
 	     ev.x = x - dx;
 	     ev.y = y - dy;
-	     if (_e_drag_win_matches(h, win) && h->cb.drop 
-		 && E_INSIDE(x, y, dx, dy, dw, dh))
+	     if (/*_e_drag_win_matches(h, win) && h->cb.drop 
+		 && */E_INSIDE(x, y, dx, dy, dw, dh))
 	       {
 		  h->cb.drop(h->cb.data, h->active_type, &ev);
 		  dropped = 1;
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to