В пн, 2007-05-07 в 12:37 -0400, Enlightenment CVS написа:
> Enlightenment CVS committal
>
> Author : englebass
> Project : e17
> Module : apps/e
>
> Dir : e17/apps/e/src/bin
>
>
> Modified Files:
> e_shelf.c e_shelf.h
>
>
> Log Message:
> Don't user timer to hide shelf.
What's the reason behind this?
>
> ===================================================================
> RCS file: /cvs/e/e17/apps/e/src/bin/e_shelf.c,v
> retrieving revision 1.60
> retrieving revision 1.61
> diff -u -3 -r1.60 -r1.61
> --- e_shelf.c 6 May 2007 16:52:24 -0000 1.60
> +++ e_shelf.c 7 May 2007 16:37:54 -0000 1.61
> @@ -18,6 +18,7 @@
> static void _e_shelf_cb_menu_items_append(void *data, E_Menu *mn);
> static void _e_shelf_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj,
> void *event_info);
> static void _e_shelf_cb_mouse_in(Ecore_Evas *ee);
> +static void _e_shelf_cb_mouse_out(Ecore_Evas *ee);
> static int _e_shelf_cb_id_sort(void *data1, void *data2);
> static int _e_shelf_cb_hide_timer(void *data);
> static int _e_shelf_cb_hide_animator(void *data);
> @@ -140,6 +141,7 @@
>
> evas_object_event_callback_add(es->o_event, EVAS_CALLBACK_MOUSE_DOWN,
> _e_shelf_cb_mouse_down, es);
> ecore_evas_callback_mouse_in_set(es->ee, _e_shelf_cb_mouse_in);
> + ecore_evas_callback_mouse_out_set(es->ee, _e_shelf_cb_mouse_out);
>
> es->o_base = edje_object_add(es->evas);
> es->name = evas_stringshare_add(name);
> @@ -271,29 +273,23 @@
> E_OBJECT_CHECK(es);
> E_OBJECT_TYPE_CHECK(es, E_SHELF_TYPE);
>
> - if ((!es->cfg->autohide) && (!es->hidden)) return;
> + if (!es->cfg->autohide) return;
>
> - if (show)
> - {
> - if (!es->hide_timer) es->hide_timer = ecore_timer_add(0.3,
> _e_shelf_cb_hide_timer, es);
> -
> - if ((es->hidden) && (!es->instant_timer))
> - {
> - es->hidden = 0;
> - edje_object_signal_emit(es->o_base, "e,state,visible", "e");
> - if (es->instant_delay >= 0.0)
> - {
> - if (!es->instant_timer)
> - _e_shelf_cb_instant_hide_timer(es);
> - }
> - else
> - {
> - if (!es->hide_animator)
> - es->hide_animator =
> ecore_animator_add(_e_shelf_cb_hide_animator, es);
> - }
> + if ((show) && (es->hidden))
> + {
> + es->hidden = 0;
> + edje_object_signal_emit(es->o_base, "e,state,visible", "e");
> + if (es->instant_delay >= 0.0)
> + {
> + _e_shelf_cb_instant_hide_timer(es);
> + }
> + else
> + {
> + if (!es->hide_animator)
> + es->hide_animator = ecore_animator_add(_e_shelf_cb_hide_animator,
> es);
> }
> }
> - else if ((!show) && (es->cfg->autohide) && (!es->hidden) &&
> (!es->gadcon->editing))
> + else if ((!show) && (!es->hidden) && (!es->gadcon->editing))
> {
> es->hidden = 1;
> edje_object_signal_emit(es->o_base, "e,state,hidden", "e");
> @@ -617,11 +613,6 @@
> static void
> _e_shelf_free(E_Shelf *es)
> {
> - if (es->hide_timer)
> - {
> - ecore_timer_del(es->hide_timer);
> - es->hide_timer = NULL;
> - }
> if (es->hide_animator)
> {
> ecore_animator_del(es->hide_animator);
> @@ -632,7 +623,7 @@
> ecore_timer_del(es->instant_timer);
> es->instant_timer = NULL;
> }
> -
> +
> if (es->menu)
> {
> e_menu_post_deactivate_callback_set(es->menu, NULL, NULL);
> @@ -1150,11 +1141,20 @@
>
> es = ecore_evas_data_get(ee, "e_shelf");
> if (!es) return;
> - es->last_in = ecore_time_get();
> edje_object_signal_emit(es->o_base, "e,state,focused", "e");
> e_shelf_toggle(es, 1);
> }
>
> +static void
> +_e_shelf_cb_mouse_out(Ecore_Evas *ee)
> +{
> + E_Shelf *es;
> +
> + es = ecore_evas_data_get(ee, "e_shelf");
> + if (!es) return;
> + e_shelf_toggle(es, 0);
> +}
> +
> static int
> _e_shelf_cb_id_sort(void *data1, void *data2)
> {
> @@ -1163,41 +1163,6 @@
> es1 = data1;
> es2 = data2;
> return (es1->id) > (es2->id);
> -}
> -
> -static int
> -_e_shelf_cb_hide_timer(void *data)
> -{
> - Evas_Coord x, y, w, h, px, py;
> -
> - E_Shelf *es = data;
> -
> - evas_object_geometry_get(es->o_base, &x, &y, &w, &h);
> - if (es->popup)
> - ecore_x_pointer_xy_get(es->popup->evas_win, &px, &py);
> - else
> - ecore_x_pointer_xy_get(es->zone->black_win, &px, &py);
> -
> - if (E_INSIDE(px, py, x, y, w, h))
> - {
> - es->last_in = ecore_time_get();
> - return 1;
> - }
> - else
> - {
> - if ((es->last_in + es->cfg->hide_timeout) < ecore_time_get())
> - {
> - e_shelf_toggle(es, 0);
> - if (es->hide_timer)
> - {
> - ecore_timer_del(es->hide_timer);
> - es->hide_timer = NULL;
> - }
> - return 0;
> - }
> - else
> - return 1;
> - }
> }
>
> static int
> ===================================================================
> RCS file: /cvs/e/e17/apps/e/src/bin/e_shelf.h,v
> retrieving revision 1.21
> retrieving revision 1.22
> diff -u -3 -r1.21 -r1.22
> --- e_shelf.h 23 Apr 2007 17:21:38 -0000 1.21
> +++ e_shelf.h 7 May 2007 16:37:54 -0000 1.22
> @@ -37,10 +37,9 @@
> Ecore_Animator *hide_animator;
> int hide_step;
> int hidden_state_size;
> - int hide_origin;
> + int hide_origin;
> float instant_delay;
> Ecore_Timer *instant_timer;
> - double last_in; /* last time the pointer was in the shelf
> */
> };
>
> EAPI int e_shelf_init(void);
>
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> 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 DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/
_______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
