when a gc_init function fails, delete the config and clean up after: mainly for systray

SVN revision: 72564
This commit is contained in:
Mike Blumenkrantz 2012-06-21 06:47:26 +00:00
parent b3e909434b
commit 82ae1fcaac
3 changed files with 30 additions and 26 deletions

View File

@ -403,7 +403,7 @@ e_gadcon_layout_policy_set(E_Gadcon *gc, E_Gadcon_Layout_Policy layout_policy)
/* FIXME: delete container obj, re-pack all clients */ /* FIXME: delete container obj, re-pack all clients */
} }
EAPI void EAPI Eina_Bool
e_gadcon_populate(E_Gadcon *gc) e_gadcon_populate(E_Gadcon *gc)
{ {
Eina_List *l; Eina_List *l;
@ -436,8 +436,11 @@ e_gadcon_populate(E_Gadcon *gc)
gcc = cc->func.init(gc, cf_gcc->name, cf_gcc->id, gcc = cc->func.init(gc, cf_gcc->name, cf_gcc->id,
cf_gcc->style); cf_gcc->style);
if (gcc) if (!gcc)
{ {
e_gadcon_layout_thaw(gc->o_container);
return EINA_FALSE;
}
gcc->cf = cf_gcc; gcc->cf = cf_gcc;
gcc->client_class = cc; gcc->client_class = cc;
gcc->config.pos = cf_gcc->geom.pos; gcc->config.pos = cf_gcc->geom.pos;
@ -462,8 +465,8 @@ e_gadcon_populate(E_Gadcon *gc)
e_gadcon_client_util_menu_attach(gcc); e_gadcon_client_util_menu_attach(gcc);
} }
} }
}
e_gadcon_layout_thaw(gc->o_container); e_gadcon_layout_thaw(gc->o_container);
return EINA_TRUE;
} }
EAPI void EAPI void

View File

@ -247,7 +247,7 @@ EAPI void e_gadcon_size_request_callback_set(E_Gadcon *gc, vo
EAPI void e_gadcon_frame_request_callback_set(E_Gadcon * gc, Evas_Object * (*func)(void *data, E_Gadcon_Client * gcc, const char *style), void *data); EAPI void e_gadcon_frame_request_callback_set(E_Gadcon * gc, Evas_Object * (*func)(void *data, E_Gadcon_Client * gcc, const char *style), void *data);
EAPI void e_gadcon_populate_callback_set(E_Gadcon *gc, void (*func)(void *data, E_Gadcon *gc, const E_Gadcon_Client_Class *cc), void *data); EAPI void e_gadcon_populate_callback_set(E_Gadcon *gc, void (*func)(void *data, E_Gadcon *gc, const E_Gadcon_Client_Class *cc), void *data);
EAPI void e_gadcon_layout_policy_set(E_Gadcon *gc, E_Gadcon_Layout_Policy layout_policy); EAPI void e_gadcon_layout_policy_set(E_Gadcon *gc, E_Gadcon_Layout_Policy layout_policy);
EAPI void e_gadcon_populate(E_Gadcon *gc); EAPI Eina_Bool e_gadcon_populate(E_Gadcon *gc);
EAPI void e_gadcon_unpopulate(E_Gadcon *gc); EAPI void e_gadcon_unpopulate(E_Gadcon *gc);
EAPI void e_gadcon_populate_class(E_Gadcon *gc, const E_Gadcon_Client_Class *cc); EAPI void e_gadcon_populate_class(E_Gadcon *gc, const E_Gadcon_Client_Class *cc);
EAPI void e_gadcon_orient(E_Gadcon *gc, E_Gadcon_Orient orient); EAPI void e_gadcon_orient(E_Gadcon *gc, E_Gadcon_Orient orient);

View File

@ -293,7 +293,8 @@ _cb_add(void *data, void *data2 __UNUSED__)
if (update) if (update)
{ {
e_gadcon_unpopulate(cfdata->gc); e_gadcon_unpopulate(cfdata->gc);
e_gadcon_populate(cfdata->gc); if (!e_gadcon_populate(cfdata->gc))
_cb_del(cfdata, NULL);
e_config_save_queue(); e_config_save_queue();
} }
e_widget_ilist_unselect(cfdata->o_list); e_widget_ilist_unselect(cfdata->o_list);