diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c index a90946846..997b4f260 100644 --- a/src/bin/e_gadget.c +++ b/src/bin/e_gadget.c @@ -324,6 +324,15 @@ _gadget_object_free(E_Object *eobj) if (zgc->id == -1) _gadget_free(zgc); } +static void +_gadget_remove(E_Gadget_Config *zgc) +{ + evas_object_smart_callback_call(zgc->site->layout, "gadget_removed", zgc->gadget); + zgc->site->gadget_list = eina_inlist_remove(zgc->site->gadget_list, EINA_INLIST_GET(zgc)); + zgc->site->gadgets = eina_list_remove(zgc->site->gadgets, zgc); + _gadget_free(zgc); +} + static void _gadget_wizard_end(void *data, int id) { @@ -331,7 +340,10 @@ _gadget_wizard_end(void *data, int id) zgc->id = id; evas_object_smart_callback_call(zgc->site->layout, "gadget_site_unlocked", NULL); - _gadget_object_finalize(zgc); + if (id) + _gadget_object_finalize(zgc); + else + _gadget_remove(zgc); } static Eina_Bool @@ -854,15 +866,6 @@ _gadget_act_configure(E_Object *obj, const char *params EINA_UNUSED, E_Binding_E return EINA_TRUE; } -static void -_gadget_remove(E_Gadget_Config *zgc) -{ - evas_object_smart_callback_call(zgc->site->layout, "gadget_removed", zgc->gadget); - zgc->site->gadget_list = eina_inlist_remove(zgc->site->gadget_list, EINA_INLIST_GET(zgc)); - zgc->site->gadgets = eina_list_remove(zgc->site->gadgets, zgc); - _gadget_free(zgc); -} - static void _gadget_menu_remove(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED) {