e gadgcon popup - actually for reals smooth out show

now it actually does look smooth. i oopsed in my last attempt.
enlightenment-0.23
Carsten Haitzler 3 years ago
parent c29dd0f5cf
commit 02957edfe9
  1. 28
      src/bin/e_gadcon_popup.c
  2. 4
      src/bin/e_gadcon_popup.h

@ -70,8 +70,8 @@ _e_gadcon_popup_free(E_Gadcon_Popup *pop)
pop->gcc = NULL;
evas_object_hide(pop->comp_object);
E_FREE_FUNC(pop->comp_object, evas_object_del);
E_FREE_FUNC(pop->show_idle_enterer, ecore_idle_enterer_del);
E_FREE_FUNC(pop->show_job, ecore_job_del);
E_FREE_FUNC(pop->show_idler, ecore_idler_del);
E_FREE_FUNC(pop->show_animator, ecore_animator_del);
free(pop);
}
@ -260,22 +260,23 @@ e_gadcon_popup_content_set(E_Gadcon_Popup *pop, Evas_Object *o)
_e_gadcon_popup_size_recalc(pop, o);
}
static void
_cb_show_job(void *data)
static Eina_Bool
_cb_show_animator(void *data)
{
E_Gadcon_Popup *pop = data;
E_FREE_FUNC(pop->show_idle_enterer, ecore_idle_enterer_del);
pop->show_job = NULL;
pop->show_animator = NULL;
E_FREE_FUNC(pop->show_idler, ecore_idler_del);
evas_object_show(pop->comp_object);
return EINA_FALSE;
}
static Eina_Bool
_cb_show_idle_enterer(void *data)
_cb_show_idler(void *data)
{
E_Gadcon_Popup *pop = data;
pop->show_idle_enterer = NULL;
E_FREE_FUNC(pop->show_job, ecore_job_del);
pop->show_job = ecore_job_add(_cb_show_job, pop);
pop->show_idler = NULL;
E_FREE_FUNC(pop->show_animator, ecore_animator_del);
pop->show_animator = ecore_animator_add(_cb_show_animator, pop);
return EINA_FALSE;
}
@ -292,8 +293,7 @@ e_gadcon_popup_show(E_Gadcon_Popup *pop)
pop->autoclose_handlers[1] = ecore_event_handler_add(E_EVENT_CLIENT_FULLSCREEN, _e_popup_autoclose_client_fullscreen_cb, NULL);
if (pop->content)
e_comp_object_util_del_list_append(pop->comp_object, pop->content);
pop->show_idle_enterer = ecore_idle_enterer_add(_cb_show_idle_enterer, pop);
evas_object_show(pop->comp_object);
pop->show_idler = ecore_idler_add(_cb_show_idler, pop);
pop->visible = EINA_TRUE;
}
@ -304,8 +304,8 @@ e_gadcon_popup_hide(E_Gadcon_Popup *pop)
E_OBJECT_TYPE_CHECK(pop, E_GADCON_POPUP_TYPE);
if (pop->pinned) return;
if (!pop->visible) return;
E_FREE_FUNC(pop->show_idle_enterer, ecore_idle_enterer_del);
E_FREE_FUNC(pop->show_job, ecore_job_del);
E_FREE_FUNC(pop->show_idler, ecore_idler_del);
E_FREE_FUNC(pop->show_animator, ecore_animator_del);
evas_object_hide(pop->comp_object);
if (pop->gadcon_was_locked)
_e_gadcon_popup_locked_set(pop, 0);

@ -17,8 +17,8 @@ struct _E_Gadcon_Popup
Evas_Object *o_bg;
Evas_Object *content;
Ecore_Event_Handler *autoclose_handlers[2];
Ecore_Idle_Enterer *show_idle_enterer;
Ecore_Job *show_job;;
Ecore_Idler *show_idler;
Ecore_Animator *show_animator;
Evas_Coord w, h;
Eina_Bool pinned E_BITFIELD;

Loading…
Cancel
Save