В сб, 2007-11-24 в 07:31 -0500, Enlightenment CVS написа:
> Enlightenment CVS committal
> 
> Author  : englebass
> Project : e17
> Module  : apps/e
> 
> Dir     : e17/apps/e/src/bin
> 
> 
> Modified Files:
>       e_shelf.c 
> 
> 
> Log Message:
> Interrupt hiding on mouse in.
> 
This one or the next patch breaks shelf autohide, if the user moves the
mouse too fast out of the shelf boundary

> ===================================================================
> RCS file: /cvs/e/e17/apps/e/src/bin/e_shelf.c,v
> retrieving revision 1.82
> retrieving revision 1.83
> diff -u -3 -r1.82 -r1.83
> --- e_shelf.c 23 Nov 2007 12:03:00 -0000      1.82
> +++ e_shelf.c 24 Nov 2007 12:31:15 -0000      1.83
> @@ -130,6 +130,8 @@
>     es->handlers = evas_list_append(es->handlers,
>        ecore_event_handler_add(E_EVENT_ZONE_EDGE_IN, _e_shelf_cb_mouse_in, 
> es));
>     es->handlers = evas_list_append(es->handlers,
> +      ecore_event_handler_add(ECORE_X_EVENT_MOUSE_IN, _e_shelf_cb_mouse_in, 
> es));
> +   es->handlers = evas_list_append(es->handlers,
>        ecore_event_handler_add(ECORE_X_EVENT_MOUSE_OUT, 
> _e_shelf_cb_mouse_out, es));
>   
>     es->o_base = edje_object_add(es->evas);
> @@ -1212,66 +1214,79 @@
>  static int
>  _e_shelf_cb_mouse_in(void *data, int type, void *event)
>  {
> -   E_Event_Zone_Edge_In *ev;
>     E_Shelf              *es;
> -   int                   show = 0;
>  
> -   ev = event;
>     es = data;
> -   switch (es->gadcon->orient)
> +   edje_object_signal_emit(es->o_base, "e,state,focused", "e");
> +   if (es->cfg->autohide_show_action) return 1;
> +
> +   if (type == E_EVENT_ZONE_EDGE_IN)
>       {
> -      case E_GADCON_ORIENT_LEFT:
> -      if ((ev->edge == E_ZONE_EDGE_LEFT) && (ev->y >= es->y) && (ev->y <= 
> (es->y + es->h)))
> -        show = 1;
> -      break;
> -      case E_GADCON_ORIENT_RIGHT:
> -      if ((ev->edge == E_ZONE_EDGE_RIGHT) && (ev->y >= es->y) && (ev->y <= 
> (es->y + es->h)))
> -        show = 1;
> -      break;
> -      case E_GADCON_ORIENT_TOP:
> -      if ((ev->edge == E_ZONE_EDGE_TOP) && (ev->x >= es->x) && (ev->x <= 
> (es->x + es->w)))
> -        show = 1;
> -      break;
> -      case E_GADCON_ORIENT_BOTTOM:
> -      if ((ev->edge == E_ZONE_EDGE_BOTTOM) && (ev->x >= es->x) && (ev->x <= 
> (es->x + es->w)))
> -        show = 1;
> -      break;
> -      case E_GADCON_ORIENT_CORNER_TL:
> -      case E_GADCON_ORIENT_CORNER_LT:
> -      if ((ev->edge == E_ZONE_EDGE_TOP) && (ev->x >= es->x) && (ev->x <= 
> (es->x + es->w)))
> -        show = 1;
> -      else if ((ev->edge == E_ZONE_EDGE_LEFT) && (ev->y >= es->y) && (ev->y 
> <= (es->y + es->h)))
> -        show = 1;
> -      break;
> -      case E_GADCON_ORIENT_CORNER_TR:
> -      case E_GADCON_ORIENT_CORNER_RT:
> -      if ((ev->edge == E_ZONE_EDGE_TOP) && (ev->x >= es->x) && (ev->x <= 
> (es->x + es->w)))
> -        show = 1;
> -      else if ((ev->edge == E_ZONE_EDGE_RIGHT) && (ev->y >= es->y) && (ev->y 
> <= (es->y + es->h)))
> -        show = 1;
> -      break;
> -      case E_GADCON_ORIENT_CORNER_BL:
> -      case E_GADCON_ORIENT_CORNER_LB:
> -      if ((ev->edge == E_ZONE_EDGE_BOTTOM) && (ev->x >= es->x) && (ev->x <= 
> (es->x + es->w)))
> -        show = 1;
> -      else if ((ev->edge == E_ZONE_EDGE_LEFT) && (ev->y >= es->y) && (ev->y 
> <= (es->y + es->h)))
> -        show = 1;
> -      break;
> -      case E_GADCON_ORIENT_CORNER_BR:
> -      case E_GADCON_ORIENT_CORNER_RB:
> -      if ((ev->edge == E_ZONE_EDGE_BOTTOM) && (ev->x >= es->x) && (ev->x <= 
> (es->x + es->w)))
> -        show = 1;
> -      else if ((ev->edge == E_ZONE_EDGE_RIGHT) && (ev->y >= es->y) && (ev->y 
> <= (es->y + es->h)))
> -        show = 1;
> -      break;
> -      default:
> -      break;
> -     }
> +     E_Event_Zone_Edge_In *ev;
> +     int                   show = 0;
>  
> -   if (show)
> +     ev = event;
> +     switch (es->gadcon->orient)
> +       {
> +        case E_GADCON_ORIENT_LEFT:
> +           if ((ev->edge == E_ZONE_EDGE_LEFT) && (ev->y >= es->y) && (ev->y 
> <= (es->y + es->h)))
> +             show = 1;
> +           break;
> +        case E_GADCON_ORIENT_RIGHT:
> +           if ((ev->edge == E_ZONE_EDGE_RIGHT) && (ev->y >= es->y) && (ev->y 
> <= (es->y + es->h)))
> +             show = 1;
> +           break;
> +        case E_GADCON_ORIENT_TOP:
> +           if ((ev->edge == E_ZONE_EDGE_TOP) && (ev->x >= es->x) && (ev->x 
> <= (es->x + es->w)))
> +             show = 1;
> +           break;
> +        case E_GADCON_ORIENT_BOTTOM:
> +           if ((ev->edge == E_ZONE_EDGE_BOTTOM) && (ev->x >= es->x) && 
> (ev->x <= (es->x + es->w)))
> +             show = 1;
> +           break;
> +        case E_GADCON_ORIENT_CORNER_TL:
> +        case E_GADCON_ORIENT_CORNER_LT:
> +           if ((ev->edge == E_ZONE_EDGE_TOP) && (ev->x >= es->x) && (ev->x 
> <= (es->x + es->w)))
> +             show = 1;
> +           else if ((ev->edge == E_ZONE_EDGE_LEFT) && (ev->y >= es->y) && 
> (ev->y <= (es->y + es->h)))
> +             show = 1;
> +           break;
> +        case E_GADCON_ORIENT_CORNER_TR:
> +        case E_GADCON_ORIENT_CORNER_RT:
> +           if ((ev->edge == E_ZONE_EDGE_TOP) && (ev->x >= es->x) && (ev->x 
> <= (es->x + es->w)))
> +             show = 1;
> +           else if ((ev->edge == E_ZONE_EDGE_RIGHT) && (ev->y >= es->y) && 
> (ev->y <= (es->y + es->h)))
> +             show = 1;
> +           break;
> +        case E_GADCON_ORIENT_CORNER_BL:
> +        case E_GADCON_ORIENT_CORNER_LB:
> +           if ((ev->edge == E_ZONE_EDGE_BOTTOM) && (ev->x >= es->x) && 
> (ev->x <= (es->x + es->w)))
> +             show = 1;
> +           else if ((ev->edge == E_ZONE_EDGE_LEFT) && (ev->y >= es->y) && 
> (ev->y <= (es->y + es->h)))
> +             show = 1;
> +           break;
> +        case E_GADCON_ORIENT_CORNER_BR:
> +        case E_GADCON_ORIENT_CORNER_RB:
> +           if ((ev->edge == E_ZONE_EDGE_BOTTOM) && (ev->x >= es->x) && 
> (ev->x <= (es->x + es->w)))
> +             show = 1;
> +           else if ((ev->edge == E_ZONE_EDGE_RIGHT) && (ev->y >= es->y) && 
> (ev->y <= (es->y + es->h)))
> +             show = 1;
> +           break;
> +        default:
> +           break;
> +       }
> +
> +     if (show) e_shelf_toggle(es, 1);
> +     }
> +   else if (type == ECORE_X_EVENT_MOUSE_IN)
>       {
> -     edje_object_signal_emit(es->o_base, "e,state,focused", "e");
> -     if (!es->cfg->autohide_show_action) e_shelf_toggle(es, 1);
> +     Ecore_X_Event_Mouse_In *ev;
> +
> +     ev = event;
> +     /* If we are about to hide the shelf, interrupt on mouse in */
> +     if ((ev->win == es->win) &&
> +         ((es->hide_animator) || (es->instant_timer)))
> +       e_shelf_toggle(es, 1);
>       }
>     return 1;
>  }
> 
> 
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2005.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> enlightenment-cvs mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs
-- 
Виктор Кожухаров /Viktor Kojouharov/

Attachment: signature.asc
Description: Това е цифрово подписана част от писмото

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to