В сб, 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/
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 [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
