diff --git a/src/bin/e_shelf.c b/src/bin/e_shelf.c index cd6a99c70..acf39021f 100644 --- a/src/bin/e_shelf.c +++ b/src/bin/e_shelf.c @@ -250,53 +250,69 @@ e_shelf_hide(E_Shelf *es) } } +EAPI void +e_shelf_locked_set(E_Shelf *es, int lock) +{ + printf("Lock shelf: %d\n", lock); + if (lock) + { + e_shelf_toggle(es, 1); + es->locked = 1; + } + else + { + es->locked = 0; + e_shelf_toggle(es, es->toggle); + } +} + EAPI void e_shelf_toggle(E_Shelf *es, int show) { - E_OBJECT_CHECK(es); - E_OBJECT_TYPE_CHECK(es, E_SHELF_TYPE); + E_OBJECT_CHECK(es); + E_OBJECT_TYPE_CHECK(es, E_SHELF_TYPE); - es->interrupted = -1; - 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_timer) - { - ecore_timer_del(es->hide_timer); - es->hide_timer = NULL; - } - if (!es->hide_animator) - es->hide_animator = ecore_animator_add(_e_shelf_cb_hide_animator, es); - } - } - else if ((!show) && (!es->hidden) && (!es->gadcon->editing) && (es->cfg->autohide)) - { - edje_object_signal_emit(es->o_base, "e,state,hidden", "e"); - if (es->instant_delay >= 0.0) - { - es->hidden = 1; - if (!es->instant_timer) - es->instant_timer = ecore_timer_add(es->instant_delay, _e_shelf_cb_instant_hide_timer, es); - } - else - { - if (es->hide_animator) - { - es->interrupted = show; - return; - } - es->hidden = 1; - if (es->hide_timer) ecore_timer_del(es->hide_timer); - es->hide_timer = ecore_timer_add(es->cfg->hide_timeout, _e_shelf_cb_hide_animator_timer, es); - } - } + es->toggle = show; + if (es->locked) + es->interrupted = -1; + 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_timer) + { + ecore_timer_del(es->hide_timer); + es->hide_timer = NULL; + } + if (!es->hide_animator) + es->hide_animator = ecore_animator_add(_e_shelf_cb_hide_animator, es); + } + } + else if ((!show) && (!es->hidden) && (!es->gadcon->editing) && (es->cfg->autohide)) + { + edje_object_signal_emit(es->o_base, "e,state,hidden", "e"); + if (es->instant_delay >= 0.0) + { + es->hidden = 1; + if (!es->instant_timer) + es->instant_timer = ecore_timer_add(es->instant_delay, _e_shelf_cb_instant_hide_timer, es); + } + else + { + if (es->hide_animator) + { + es->interrupted = show; + return; + } + es->hidden = 1; + if (es->hide_timer) ecore_timer_del(es->hide_timer); + es->hide_timer = ecore_timer_add(es->cfg->hide_timeout, _e_shelf_cb_hide_animator_timer, es); + } + } } EAPI void @@ -609,31 +625,31 @@ EAPI E_Shelf * e_shelf_config_new(E_Zone *zone, E_Config_Shelf *cf_es) { E_Shelf *es; - + es = e_shelf_zone_new(zone, cf_es->name, cf_es->style, - cf_es->popup, cf_es->layer, cf_es->id); + cf_es->popup, cf_es->layer, cf_es->id); if (!es) return NULL; - + if (!cf_es->hide_timeout) cf_es->hide_timeout = 1.0; if (!cf_es->hide_duration) cf_es->hide_duration = 1.0; es->cfg = cf_es; es->fit_along = cf_es->fit_along; es->fit_size = cf_es->fit_size; - + e_shelf_orient(es, cf_es->orient); e_shelf_position_calc(es); e_shelf_populate(es); - + if (cf_es->desk_show_mode) { E_Desk *desk; Evas_List *ll; - + desk = e_desk_current_get(zone); for (ll = cf_es->desk_list; ll; ll = ll->next) { E_Config_Shelf_Desk *sd; - + sd = ll->data; if ((desk->x == sd->x) && (desk->y == sd->y)) { @@ -644,7 +660,7 @@ e_shelf_config_new(E_Zone *zone, E_Config_Shelf *cf_es) } else e_shelf_show(es); - + e_shelf_toggle(es, 0); return es; } diff --git a/src/bin/e_shelf.h b/src/bin/e_shelf.h index 385b28434..74ddeaa33 100644 --- a/src/bin/e_shelf.h +++ b/src/bin/e_shelf.h @@ -28,9 +28,6 @@ struct _E_Shelf const char *name; const char *style; E_Config_Shelf *cfg; - unsigned char fit_along : 1; - unsigned char fit_size : 1; - unsigned char hidden : 1; int size; E_Config_Dialog *config_dialog; E_Menu *menu; @@ -43,6 +40,11 @@ struct _E_Shelf float instant_delay; Ecore_Timer *instant_timer; Evas_List *handlers; + unsigned char fit_along : 1; + unsigned char fit_size : 1; + unsigned char hidden : 1; + unsigned char locked : 1; + unsigned char toggle : 1; }; EAPI int e_shelf_init(void); @@ -54,6 +56,7 @@ EAPI void e_shelf_zone_move_resize_handle(E_Zone *zone); EAPI void e_shelf_populate(E_Shelf *es); EAPI void e_shelf_show(E_Shelf *es); EAPI void e_shelf_hide(E_Shelf *es); +EAPI void e_shelf_locked_set(E_Shelf *es, int lock); EAPI void e_shelf_toggle(E_Shelf *es, int show); EAPI void e_shelf_move(E_Shelf *es, int x, int y); EAPI void e_shelf_resize(E_Shelf *es, int w, int h);