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