econfigure2: fixed some issues

And a single part is not done with a frame arround it,
This commit is contained in:
Marcel Hollerbach 2015-02-05 20:31:54 +01:00
parent 350222c77a
commit 532104e905
2 changed files with 17 additions and 5 deletions

View File

@ -266,23 +266,30 @@ content_cb(Evas_Object *par, Eo *item, void *data)
E_Config_Panel_Part *part; E_Config_Panel_Part *part;
Eina_List *node; Eina_List *node;
Evas_Object *box, *res; Evas_Object *box, *res;
Eina_Bool single = EINA_FALSE;
it = data; it = data;
box = elm_box_add(par); box = elm_box_add(par);
evas_object_size_hint_align_set(box, 0.5, 0.0); evas_object_size_hint_align_set(box, 0.5, 0.0);
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
if (eina_list_count(it->parts) == 1)
single = EINA_TRUE;
EINA_LIST_FOREACH(it->parts, node, part) EINA_LIST_FOREACH(it->parts, node, part)
{ {
Evas_Object *content, *result; Evas_Object *content, *result;
if (part->data_func) if (part->data_func)
part->cbdata = part->data_func(it->path, part->name, part->data); part->cbdata = part->data_func(it->path, part->name, part->data);
if (part->create_func) //WTF - what does a part should do if there is nor create_func ? if (part->create_func) //WTF - what does a part should do if there is nor create_func ?
part->tmp = content = part->create_func(it->path, part->name, par, part->cbdata, part->data); part->tmp = content = part->create_func(it->path, part->name, par, part->cbdata, part->data);
part->realized = EINA_TRUE;
evas_object_show(content); evas_object_show(content);
if (!single)
result = settingswidget_part_gen(par, content, it->label, it->help); result = settingswidget_part_gen(par, content, it->label, it->help);
else
result = content;
elm_box_pack_end(box, result); elm_box_pack_end(box, result);
} }
@ -373,6 +380,7 @@ settingswidget_fill(Evas_Object *obj)
eina_hash_add(table, it->path, item); eina_hash_add(table, it->path, item);
} }
eina_hash_free(table);
} }
static void static void
@ -382,15 +390,18 @@ _e_config_panel_close(void *data, Evas_Object *obj, void *event)
E_Config_Panel_Item *it; E_Config_Panel_Item *it;
E_Config_Panel_Part *p; E_Config_Panel_Part *p;
if (!win) return; /* check is needed because close cb is called twice when close button is doubleclicked */
EINA_LIST_FOREACH(items, node, it) EINA_LIST_FOREACH(items, node, it)
{ {
EINA_LIST_FOREACH(it->parts, node2, p) EINA_LIST_FOREACH(it->parts, node2, p)
{ {
if (!p->realized) continue;
if (p->free_func) if (p->free_func)
p->free_func(it->path, p->name, p->cbdata, p->data); p->free_func(it->path, p->name, p->cbdata, p->data);
else else if (p->cbdata)
if (p->cbdata)
free(p->cbdata); free(p->cbdata);
p->realized = EINA_FALSE;
p->cbdata = NULL; p->cbdata = NULL;
} }
} }

View File

@ -51,6 +51,7 @@ typedef struct
void *cbdata; void *cbdata;
Eina_Bool changed; Eina_Bool changed;
Eina_Bool realized;
Evas_Object *tmp; Evas_Object *tmp;
} E_Config_Panel_Part; } E_Config_Panel_Part;
/* /*