Possible to lock shelf.

SVN revision: 32837
This commit is contained in:
Sebastian Dransfeld 2007-11-23 09:18:21 +00:00
parent 218076320e
commit 8304a2cb9e
2 changed files with 73 additions and 54 deletions

View File

@ -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;
}

View File

@ -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);