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 EAPI void
e_shelf_toggle(E_Shelf *es, int show) e_shelf_toggle(E_Shelf *es, int show)
{ {
E_OBJECT_CHECK(es); E_OBJECT_CHECK(es);
E_OBJECT_TYPE_CHECK(es, E_SHELF_TYPE); E_OBJECT_TYPE_CHECK(es, E_SHELF_TYPE);
es->interrupted = -1; es->toggle = show;
if ((show) && (es->hidden)) if (es->locked)
{ es->interrupted = -1;
es->hidden = 0; if ((show) && (es->hidden))
edje_object_signal_emit(es->o_base, "e,state,visible", "e"); {
if (es->instant_delay >= 0.0) es->hidden = 0;
{ edje_object_signal_emit(es->o_base, "e,state,visible", "e");
_e_shelf_cb_instant_hide_timer(es); if (es->instant_delay >= 0.0)
} _e_shelf_cb_instant_hide_timer(es);
else else
{ {
if (es->hide_timer) if (es->hide_timer)
{ {
ecore_timer_del(es->hide_timer); ecore_timer_del(es->hide_timer);
es->hide_timer = NULL; es->hide_timer = NULL;
} }
if (!es->hide_animator) if (!es->hide_animator)
es->hide_animator = ecore_animator_add(_e_shelf_cb_hide_animator, es); es->hide_animator = ecore_animator_add(_e_shelf_cb_hide_animator, es);
} }
} }
else if ((!show) && (!es->hidden) && (!es->gadcon->editing) && (es->cfg->autohide)) else if ((!show) && (!es->hidden) && (!es->gadcon->editing) && (es->cfg->autohide))
{ {
edje_object_signal_emit(es->o_base, "e,state,hidden", "e"); edje_object_signal_emit(es->o_base, "e,state,hidden", "e");
if (es->instant_delay >= 0.0) if (es->instant_delay >= 0.0)
{ {
es->hidden = 1; es->hidden = 1;
if (!es->instant_timer) if (!es->instant_timer)
es->instant_timer = ecore_timer_add(es->instant_delay, _e_shelf_cb_instant_hide_timer, es); es->instant_timer = ecore_timer_add(es->instant_delay, _e_shelf_cb_instant_hide_timer, es);
} }
else else
{ {
if (es->hide_animator) if (es->hide_animator)
{ {
es->interrupted = show; es->interrupted = show;
return; return;
} }
es->hidden = 1; es->hidden = 1;
if (es->hide_timer) ecore_timer_del(es->hide_timer); 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->hide_timer = ecore_timer_add(es->cfg->hide_timeout, _e_shelf_cb_hide_animator_timer, es);
} }
} }
} }
EAPI void EAPI void
@ -609,31 +625,31 @@ EAPI E_Shelf *
e_shelf_config_new(E_Zone *zone, E_Config_Shelf *cf_es) e_shelf_config_new(E_Zone *zone, E_Config_Shelf *cf_es)
{ {
E_Shelf *es; E_Shelf *es;
es = e_shelf_zone_new(zone, cf_es->name, cf_es->style, 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 (!es) return NULL;
if (!cf_es->hide_timeout) cf_es->hide_timeout = 1.0; if (!cf_es->hide_timeout) cf_es->hide_timeout = 1.0;
if (!cf_es->hide_duration) cf_es->hide_duration = 1.0; if (!cf_es->hide_duration) cf_es->hide_duration = 1.0;
es->cfg = cf_es; es->cfg = cf_es;
es->fit_along = cf_es->fit_along; es->fit_along = cf_es->fit_along;
es->fit_size = cf_es->fit_size; es->fit_size = cf_es->fit_size;
e_shelf_orient(es, cf_es->orient); e_shelf_orient(es, cf_es->orient);
e_shelf_position_calc(es); e_shelf_position_calc(es);
e_shelf_populate(es); e_shelf_populate(es);
if (cf_es->desk_show_mode) if (cf_es->desk_show_mode)
{ {
E_Desk *desk; E_Desk *desk;
Evas_List *ll; Evas_List *ll;
desk = e_desk_current_get(zone); desk = e_desk_current_get(zone);
for (ll = cf_es->desk_list; ll; ll = ll->next) for (ll = cf_es->desk_list; ll; ll = ll->next)
{ {
E_Config_Shelf_Desk *sd; E_Config_Shelf_Desk *sd;
sd = ll->data; sd = ll->data;
if ((desk->x == sd->x) && (desk->y == sd->y)) 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 else
e_shelf_show(es); e_shelf_show(es);
e_shelf_toggle(es, 0); e_shelf_toggle(es, 0);
return es; return es;
} }

View File

@ -28,9 +28,6 @@ struct _E_Shelf
const char *name; const char *name;
const char *style; const char *style;
E_Config_Shelf *cfg; E_Config_Shelf *cfg;
unsigned char fit_along : 1;
unsigned char fit_size : 1;
unsigned char hidden : 1;
int size; int size;
E_Config_Dialog *config_dialog; E_Config_Dialog *config_dialog;
E_Menu *menu; E_Menu *menu;
@ -43,6 +40,11 @@ struct _E_Shelf
float instant_delay; float instant_delay;
Ecore_Timer *instant_timer; Ecore_Timer *instant_timer;
Evas_List *handlers; 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); 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_populate(E_Shelf *es);
EAPI void e_shelf_show(E_Shelf *es); EAPI void e_shelf_show(E_Shelf *es);
EAPI void e_shelf_hide(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_toggle(E_Shelf *es, int show);
EAPI void e_shelf_move(E_Shelf *es, int x, int y); EAPI void e_shelf_move(E_Shelf *es, int x, int y);
EAPI void e_shelf_resize(E_Shelf *es, int w, int h); EAPI void e_shelf_resize(E_Shelf *es, int w, int h);