desklock - allow for fadein/out effects in theme for locking/unlocking

this allows the theme to now do special effects on showing the
desklock and on hiding it again afterwards so it can look nicer.

@feature
This commit is contained in:
Carsten Haitzler 2016-12-30 15:26:37 +09:00
parent 965133445a
commit c997077c17
2 changed files with 38 additions and 6 deletions

View File

@ -294,7 +294,7 @@ e_desklock_show(Eina_Bool suspend)
o = evas_object_rectangle_add(e_comp->evas);
block_rects = eina_list_append(block_rects, o);
evas_object_color_set(o, 0, 0, 0, 255);
evas_object_color_set(o, 0, 0, 0, 0);
evas_object_resize(o, 99999, 99999);
evas_object_layer_set(o, E_LAYER_DESKLOCK);
evas_object_show(o);

View File

@ -454,16 +454,48 @@ _lokker_popup_add(E_Zone *zone)
edd->elock_wnd_list = eina_list_append(edd->elock_wnd_list, lp);
}
static void
_lokker_cb_hide_done(void *data, Evas_Object *obj, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
{
Evas_Object *comp_object = evas_object_data_get(obj, "comp_object");
edje_object_signal_callback_del(obj, "e,action,hide,done", "e",
_lokker_cb_hide_done);
evas_object_del(data);
evas_object_del(obj);
evas_object_hide(comp_object);
evas_object_del(comp_object);
}
static void
_lokker_popup_free(Lokker_Popup *lp)
{
const char *s;
if (!lp) return;
evas_object_hide(lp->comp_object);
evas_object_del(lp->comp_object);
evas_object_del(lp->bg_object);
evas_object_del(lp->login_box);
s = edje_object_data_get(lp->bg_object, "hide_signal");
if ((s) && (atoi(s) == 1))
{
evas_object_data_set(lp->bg_object, "comp_object", lp->comp_object);
evas_object_data_set(lp->bg_object, "login_box", lp->login_box);
edje_object_signal_callback_add(lp->bg_object,
"e,action,hide,done", "e",
_lokker_cb_hide_done,
lp->login_box);
edje_object_signal_emit(lp->bg_object, "e,action,hide", "e");
edje_object_signal_emit(lp->login_box, "e,action,hide", "e");
lp->bg_object = NULL;
lp->login_box = NULL;
}
else
{
evas_object_del(lp->bg_object);
evas_object_del(lp->login_box);
evas_object_hide(lp->comp_object);
evas_object_del(lp->comp_object);
lp->comp_object = NULL;
lp->bg_object = NULL;
lp->login_box = NULL;
}
free(lp);
}