forked from enlightenment/enlightenment
when a gc_init function fails, delete the config and clean up after: mainly for systray
SVN revision: 72564
This commit is contained in:
parent
b3e909434b
commit
82ae1fcaac
|
@ -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 */
|
||||
}
|
||||
|
||||
EAPI void
|
||||
EAPI Eina_Bool
|
||||
e_gadcon_populate(E_Gadcon *gc)
|
||||
{
|
||||
Eina_List *l;
|
||||
|
@ -436,34 +436,37 @@ e_gadcon_populate(E_Gadcon *gc)
|
|||
gcc = cc->func.init(gc, cf_gcc->name, cf_gcc->id,
|
||||
cf_gcc->style);
|
||||
|
||||
if (gcc)
|
||||
if (!gcc)
|
||||
{
|
||||
gcc->cf = cf_gcc;
|
||||
gcc->client_class = cc;
|
||||
gcc->config.pos = cf_gcc->geom.pos;
|
||||
gcc->config.size = cf_gcc->geom.size;
|
||||
gcc->config.res = cf_gcc->geom.res;
|
||||
gcc->state_info.seq = cf_gcc->state_info.seq;
|
||||
gcc->state_info.flags = cf_gcc->state_info.flags;
|
||||
if (gcc->o_frame)
|
||||
e_gadcon_layout_pack_options_set(gcc->o_frame, gcc);
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_pack_options_set(gcc->o_base, gcc);
|
||||
|
||||
if (!gcc->autoscroll_set)
|
||||
e_gadcon_client_autoscroll_set(gcc, cf_gcc->autoscroll);
|
||||
// e_gadcon_client_resizable_set(gcc, cf_gcc->resizable);
|
||||
if (gcc->client_class->func.orient)
|
||||
gcc->client_class->func.orient(gcc, gc->orient);
|
||||
|
||||
_e_gadcon_client_save(gcc);
|
||||
if (gc->editing) e_gadcon_client_edit_begin(gcc);
|
||||
if (gc->instant_edit)
|
||||
e_gadcon_client_util_menu_attach(gcc);
|
||||
e_gadcon_layout_thaw(gc->o_container);
|
||||
return EINA_FALSE;
|
||||
}
|
||||
gcc->cf = cf_gcc;
|
||||
gcc->client_class = cc;
|
||||
gcc->config.pos = cf_gcc->geom.pos;
|
||||
gcc->config.size = cf_gcc->geom.size;
|
||||
gcc->config.res = cf_gcc->geom.res;
|
||||
gcc->state_info.seq = cf_gcc->state_info.seq;
|
||||
gcc->state_info.flags = cf_gcc->state_info.flags;
|
||||
if (gcc->o_frame)
|
||||
e_gadcon_layout_pack_options_set(gcc->o_frame, gcc);
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_pack_options_set(gcc->o_base, gcc);
|
||||
|
||||
if (!gcc->autoscroll_set)
|
||||
e_gadcon_client_autoscroll_set(gcc, cf_gcc->autoscroll);
|
||||
// e_gadcon_client_resizable_set(gcc, cf_gcc->resizable);
|
||||
if (gcc->client_class->func.orient)
|
||||
gcc->client_class->func.orient(gcc, gc->orient);
|
||||
|
||||
_e_gadcon_client_save(gcc);
|
||||
if (gc->editing) e_gadcon_client_edit_begin(gcc);
|
||||
if (gc->instant_edit)
|
||||
e_gadcon_client_util_menu_attach(gcc);
|
||||
}
|
||||
}
|
||||
e_gadcon_layout_thaw(gc->o_container);
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
|
|
@ -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_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_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_populate_class(E_Gadcon *gc, const E_Gadcon_Client_Class *cc);
|
||||
EAPI void e_gadcon_orient(E_Gadcon *gc, E_Gadcon_Orient orient);
|
||||
|
|
|
@ -293,7 +293,8 @@ _cb_add(void *data, void *data2 __UNUSED__)
|
|||
if (update)
|
||||
{
|
||||
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_widget_ilist_unselect(cfdata->o_list);
|
||||
|
|
Loading…
Reference in New Issue