forked from enlightenment/enlightenment
no mroe leak - and simply bad changes to smart objects. BAD BAD.
SVN revision: 19751
This commit is contained in:
parent
fd0e90de2e
commit
2cc0fa56bc
|
@ -71,6 +71,7 @@ e_icon_file_edje_set(Evas_Object *obj, const char *file, const char *part)
|
||||||
if (sd->obj) evas_object_del(sd->obj);
|
if (sd->obj) evas_object_del(sd->obj);
|
||||||
sd->obj = edje_object_add(evas_object_evas_get(obj));
|
sd->obj = edje_object_add(evas_object_evas_get(obj));
|
||||||
edje_object_file_set(sd->obj, file, part);
|
edje_object_file_set(sd->obj, file, part);
|
||||||
|
evas_object_smart_member_add(sd->obj, obj);
|
||||||
_e_icon_smart_reconfigure(sd);
|
_e_icon_smart_reconfigure(sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,6 +85,7 @@ e_icon_object_set(Evas_Object *obj, Evas_Object *o)
|
||||||
/* smart code here */
|
/* smart code here */
|
||||||
if (sd->obj) evas_object_del(sd->obj);
|
if (sd->obj) evas_object_del(sd->obj);
|
||||||
sd->obj = o;
|
sd->obj = o;
|
||||||
|
evas_object_smart_member_add(sd->obj, obj);
|
||||||
_e_icon_smart_reconfigure(sd);
|
_e_icon_smart_reconfigure(sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -218,40 +220,49 @@ _e_icon_smart_reconfigure(E_Smart_Data *sd)
|
||||||
int iw, ih;
|
int iw, ih;
|
||||||
Evas_Coord x, y, w, h;
|
Evas_Coord x, y, w, h;
|
||||||
|
|
||||||
ih = 0;
|
|
||||||
ih = 0;
|
|
||||||
if (!strcmp(evas_object_type_get(sd->obj), "edje"))
|
if (!strcmp(evas_object_type_get(sd->obj), "edje"))
|
||||||
edje_object_size_min_calc(sd->obj, &iw, &ih);
|
|
||||||
else
|
|
||||||
evas_object_image_size_get(sd->obj, &iw, &ih);
|
|
||||||
if (iw < 1) iw = 1;
|
|
||||||
if (ih < 1) ih = 1;
|
|
||||||
|
|
||||||
if (sd->fill_inside)
|
|
||||||
{
|
{
|
||||||
w = sd->w;
|
w = sd->w;
|
||||||
h = ((double)ih * w) / (double)iw;
|
h = sd->h;
|
||||||
if (h > sd->h)
|
x = sd->x;
|
||||||
|
y = sd->y;
|
||||||
|
evas_object_move(sd->obj, x, y);
|
||||||
|
evas_object_resize(sd->obj, w, h);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ih = 0;
|
||||||
|
ih = 0;
|
||||||
|
evas_object_image_size_get(sd->obj, &iw, &ih);
|
||||||
|
if (iw < 1) iw = 1;
|
||||||
|
if (ih < 1) ih = 1;
|
||||||
|
|
||||||
|
if (sd->fill_inside)
|
||||||
{
|
{
|
||||||
h = sd->h;
|
w = sd->w;
|
||||||
w = ((double)iw * h) / (double)ih;
|
h = ((double)ih * w) / (double)iw;
|
||||||
|
if (h > sd->h)
|
||||||
|
{
|
||||||
|
h = sd->h;
|
||||||
|
w = ((double)iw * h) / (double)ih;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
else
|
|
||||||
{
|
|
||||||
w = sd->w;
|
|
||||||
h = ((double)ih * w) / (double)iw;
|
|
||||||
if (h < sd->h)
|
|
||||||
{
|
{
|
||||||
h = sd->h;
|
w = sd->w;
|
||||||
w = ((double)iw * h) / (double)ih;
|
h = ((double)ih * w) / (double)iw;
|
||||||
}
|
if (h < sd->h)
|
||||||
|
{
|
||||||
|
h = sd->h;
|
||||||
|
w = ((double)iw * h) / (double)ih;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
x = sd->x + ((sd->w - w) / 2);
|
||||||
|
y = sd->y + ((sd->h - h) / 2);
|
||||||
|
evas_object_move(sd->obj, x, y);
|
||||||
|
evas_object_image_fill_set(sd->obj, 0, 0, w, h);
|
||||||
|
evas_object_resize(sd->obj, w, h);
|
||||||
}
|
}
|
||||||
x = sd->x + ((sd->w - w) / 2);
|
|
||||||
y = sd->y + ((sd->h - h) / 2);
|
|
||||||
evas_object_move(sd->obj, x, y);
|
|
||||||
evas_object_image_fill_set(sd->obj, 0, 0, w, h);
|
|
||||||
evas_object_resize(sd->obj, w, h);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -22,6 +22,7 @@ static void _load_bgs(Evas *evas, E_Config_Dialog *cfd, Evas_Object *il);
|
||||||
/* Actual config data we will be playing with whil the dialog is active */
|
/* Actual config data we will be playing with whil the dialog is active */
|
||||||
struct _CFData
|
struct _CFData
|
||||||
{
|
{
|
||||||
|
E_Config_Dialog *cfd;
|
||||||
/*- BASIC -*/
|
/*- BASIC -*/
|
||||||
char *file ;
|
char *file ;
|
||||||
char *current_file;
|
char *current_file;
|
||||||
|
@ -76,6 +77,7 @@ _create_data(E_Config_Dialog *cfd)
|
||||||
CFData *cfdata;
|
CFData *cfdata;
|
||||||
|
|
||||||
cfdata = E_NEW(CFData, 1);
|
cfdata = E_NEW(CFData, 1);
|
||||||
|
cfdata->cfd = cfd;
|
||||||
_fill_data(cfdata);
|
_fill_data(cfdata);
|
||||||
return cfdata;
|
return cfdata;
|
||||||
}
|
}
|
||||||
|
@ -111,20 +113,18 @@ _basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata)
|
||||||
void
|
void
|
||||||
_e_config_bg_cb_standard(void *data)
|
_e_config_bg_cb_standard(void *data)
|
||||||
{
|
{
|
||||||
E_Cfg_Bg_Data *d;
|
|
||||||
CFData *cfdata;
|
CFData *cfdata;
|
||||||
|
|
||||||
d = data;
|
cfdata = data;
|
||||||
cfdata = d->cfd->cfdata;
|
|
||||||
e_widget_image_object_set
|
e_widget_image_object_set
|
||||||
(d->cfd->data,
|
(cfdata->cfd->data,
|
||||||
e_thumb_evas_object_get(d->file, d->cfd->dia->win->evas, 200, 160, 1));
|
e_thumb_evas_object_get(cfdata->file, cfdata->cfd->dia->win->evas, 200, 160, 1));
|
||||||
if (cfdata->current_file)
|
if (cfdata->current_file)
|
||||||
{
|
{
|
||||||
if (!strcmp(d->file, cfdata->current_file))
|
if (!strcmp(cfdata->file, cfdata->current_file))
|
||||||
{
|
{
|
||||||
e_dialog_button_disable_num_set(d->cfd->dia, 0, 1);
|
e_dialog_button_disable_num_set(cfdata->cfd->dia, 0, 1);
|
||||||
e_dialog_button_disable_num_set(d->cfd->dia, 1, 1);
|
e_dialog_button_disable_num_set(cfdata->cfd->dia, 1, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -153,7 +153,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata)
|
||||||
e_widget_table_object_append(o, il, 0, 0, 1, 2, 1, 1, 1, 1);
|
e_widget_table_object_append(o, il, 0, 0, 1, 2, 1, 1, 1, 1);
|
||||||
|
|
||||||
fr = e_widget_framelist_add(evas, "Preview", 0);
|
fr = e_widget_framelist_add(evas, "Preview", 0);
|
||||||
e_widget_min_size_set(fr, 180, 160);
|
e_widget_min_size_set(fr, 200, 160);
|
||||||
e_widget_table_object_append(o, fr, 1, 0, 1, 1, 1, 1, 1, 1);
|
e_widget_table_object_append(o, fr, 1, 0, 1, 1, 1, 1, 1, 1);
|
||||||
e_widget_framelist_object_append(fr, im);
|
e_widget_framelist_object_append(fr, im);
|
||||||
|
|
||||||
|
@ -168,26 +168,28 @@ _advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata)
|
||||||
int x, y;
|
int x, y;
|
||||||
|
|
||||||
if (!cfdata->file) return 0;
|
if (!cfdata->file) return 0;
|
||||||
|
z = e_zone_current_get(cfd->con);
|
||||||
|
d = e_desk_current_get(z);
|
||||||
|
e_desk_xy_get(d, &x, &y);
|
||||||
switch (cfdata->bg_method)
|
switch (cfdata->bg_method)
|
||||||
{
|
{
|
||||||
case BG_SET_DEFAULT_DESK:
|
case BG_SET_DEFAULT_DESK:
|
||||||
while (e_config->desktop_backgrounds)
|
e_bg_del(-1, -1, -1, -1);
|
||||||
{
|
e_bg_del(-1, z->num, x, y);
|
||||||
E_Config_Desktop_Background *cfbg;
|
e_bg_del(z->container->num, -1, x, y);
|
||||||
|
e_bg_del(z->container->num, z->num, x, y);
|
||||||
cfbg = e_config->desktop_backgrounds->data;
|
e_bg_del(-1, z->num, -1, -1);
|
||||||
e_bg_del(cfbg->container, cfbg->zone, cfbg->desk_x, cfbg->desk_y);
|
e_bg_del(z->container->num, -1, -1, -1);
|
||||||
}
|
e_bg_del(z->container->num, z->num, -1, -1);
|
||||||
if (e_config->desktop_default_background) evas_stringshare_del(e_config->desktop_default_background);
|
if (e_config->desktop_default_background) evas_stringshare_del(e_config->desktop_default_background);
|
||||||
e_config->desktop_default_background = evas_stringshare_add(cfdata->file);
|
e_config->desktop_default_background = evas_stringshare_add(cfdata->file);
|
||||||
e_bg_update();
|
e_bg_update();
|
||||||
e_config_save_queue();
|
e_config_save_queue();
|
||||||
break;
|
break;
|
||||||
case BG_SET_THIS_DESK:
|
case BG_SET_THIS_DESK:
|
||||||
z = e_zone_current_get(cfd->con);
|
|
||||||
d = e_desk_current_get(z);
|
|
||||||
e_desk_xy_get(d, &x, &y);
|
|
||||||
e_bg_del(-1, -1, -1, -1);
|
e_bg_del(-1, -1, -1, -1);
|
||||||
|
e_bg_del(-1, z->num, x, y);
|
||||||
|
e_bg_del(z->container->num, -1, x, y);
|
||||||
e_bg_del(z->container->num, z->num, x, y);
|
e_bg_del(z->container->num, z->num, x, y);
|
||||||
e_bg_add(z->container->num, z->num, x, y, cfdata->file);
|
e_bg_add(z->container->num, z->num, x, y, cfdata->file);
|
||||||
e_bg_update();
|
e_bg_update();
|
||||||
|
@ -236,14 +238,14 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata)
|
||||||
e_widget_table_object_append(o, il, 0, 0, 1, 2, 1, 1, 1, 1);
|
e_widget_table_object_append(o, il, 0, 0, 1, 2, 1, 1, 1, 1);
|
||||||
|
|
||||||
fr = e_widget_framelist_add(evas, "Preview", 0);
|
fr = e_widget_framelist_add(evas, "Preview", 0);
|
||||||
e_widget_min_size_set(fr, 180, 160);
|
e_widget_min_size_set(fr, 200, 160);
|
||||||
e_widget_table_object_append(o, fr, 1, 0, 1, 1, 1, 1, 1, 1);
|
e_widget_table_object_append(o, fr, 1, 0, 1, 1, 1, 1, 1, 1);
|
||||||
e_widget_framelist_object_append(fr, im);
|
e_widget_framelist_object_append(fr, im);
|
||||||
|
|
||||||
rg = e_widget_radio_group_new(&(cfdata->bg_method));
|
rg = e_widget_radio_group_new(&(cfdata->bg_method));
|
||||||
|
|
||||||
fr = e_widget_framelist_add(evas, "Set Background For", 0);
|
fr = e_widget_framelist_add(evas, "Set Background For", 0);
|
||||||
e_widget_min_size_set(fr, 180, 160);
|
e_widget_min_size_set(fr, 200, 160);
|
||||||
|
|
||||||
oc = e_widget_radio_add(evas, _("Default Desktop"), BG_SET_DEFAULT_DESK, rg);
|
oc = e_widget_radio_add(evas, _("Default Desktop"), BG_SET_DEFAULT_DESK, rg);
|
||||||
e_widget_framelist_object_append(fr, oc);
|
e_widget_framelist_object_append(fr, oc);
|
||||||
|
@ -266,6 +268,8 @@ _load_bgs(Evas *evas, E_Config_Dialog *cfd, Evas_Object *il)
|
||||||
Evas_Object *bg = NULL;
|
Evas_Object *bg = NULL;
|
||||||
char buf[4096];
|
char buf[4096];
|
||||||
char *homedir;
|
char *homedir;
|
||||||
|
E_Zone *z;
|
||||||
|
int iw, ih, pw, ph;
|
||||||
|
|
||||||
homedir = e_user_homedir_get();
|
homedir = e_user_homedir_get();
|
||||||
if (homedir)
|
if (homedir)
|
||||||
|
@ -274,6 +278,22 @@ _load_bgs(Evas *evas, E_Config_Dialog *cfd, Evas_Object *il)
|
||||||
free(homedir);
|
free(homedir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
z = e_zone_current_get(cfd->con);
|
||||||
|
iw = 48;
|
||||||
|
ih = ((double)z->h * iw) / (double)z->w;
|
||||||
|
if (ih > 48)
|
||||||
|
{
|
||||||
|
ih = 48;
|
||||||
|
iw = ((double)z->w * ih) / (double)z->h;
|
||||||
|
}
|
||||||
|
pw = 160;
|
||||||
|
ph = ((double)z->h * pw) / (double)z->w;
|
||||||
|
if (ph > 120)
|
||||||
|
{
|
||||||
|
ph = 120;
|
||||||
|
pw = ((double)z->w * ph) / (double)z->h;
|
||||||
|
}
|
||||||
|
|
||||||
if (ecore_file_is_dir(buf))
|
if (ecore_file_is_dir(buf))
|
||||||
{
|
{
|
||||||
Ecore_List *bgs;
|
Ecore_List *bgs;
|
||||||
|
@ -296,15 +316,10 @@ _load_bgs(Evas *evas, E_Config_Dialog *cfd, Evas_Object *il)
|
||||||
{
|
{
|
||||||
Evas_Object *o = NULL;
|
Evas_Object *o = NULL;
|
||||||
char *noext;
|
char *noext;
|
||||||
E_Cfg_Bg_Data *cb_data;
|
|
||||||
|
|
||||||
o = e_thumb_generate_begin(fullbg, 48, 48, evas, &o, NULL, NULL);
|
o = e_thumb_generate_begin(fullbg, iw, ih, evas, &o, NULL, NULL);
|
||||||
noext = ecore_file_strip_ext(bgfile);
|
noext = ecore_file_strip_ext(bgfile);
|
||||||
/* FIXME: cb_data is leaked - not freed ever */
|
e_widget_ilist_append(il, o, noext, _e_config_bg_cb_standard, cfd->cfdata, fullbg);
|
||||||
cb_data = E_NEW(E_Cfg_Bg_Data, 1);
|
|
||||||
cb_data->cfd = cfd;
|
|
||||||
cb_data->file = strdup(fullbg);
|
|
||||||
e_widget_ilist_append(il, o, noext, _e_config_bg_cb_standard, cb_data, cb_data->file);
|
|
||||||
|
|
||||||
if ((e_config->desktop_default_background) &&
|
if ((e_config->desktop_default_background) &&
|
||||||
(!strcmp(e_config->desktop_default_background, fullbg)))
|
(!strcmp(e_config->desktop_default_background, fullbg)))
|
||||||
|
@ -312,9 +327,9 @@ _load_bgs(Evas *evas, E_Config_Dialog *cfd, Evas_Object *il)
|
||||||
e_widget_ilist_selected_set(il, i);
|
e_widget_ilist_selected_set(il, i);
|
||||||
bg = edje_object_add(evas);
|
bg = edje_object_add(evas);
|
||||||
edje_object_file_set(bg, e_config->desktop_default_background, "desktop/background");
|
edje_object_file_set(bg, e_config->desktop_default_background, "desktop/background");
|
||||||
im = e_widget_image_add_from_object(evas, bg, 200, 160);
|
im = e_widget_image_add_from_object(evas, bg, pw, ph);
|
||||||
e_widget_image_object_set(im, e_thumb_evas_object_get(fullbg, evas, 200, 160, 1));
|
e_widget_image_object_set(im, e_thumb_evas_object_get(fullbg, evas, 200, 160, 1));
|
||||||
}
|
}
|
||||||
free(noext);
|
free(noext);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
@ -326,10 +341,13 @@ _load_bgs(Evas *evas, E_Config_Dialog *cfd, Evas_Object *il)
|
||||||
|
|
||||||
if (im == NULL)
|
if (im == NULL)
|
||||||
{
|
{
|
||||||
|
/* FIXME: this is broken as the edje extends outside at the start
|
||||||
|
* for some reason */
|
||||||
bg = edje_object_add(evas);
|
bg = edje_object_add(evas);
|
||||||
e_theme_edje_object_set(bg, "base/theme/background", "desktop/background");
|
e_theme_edje_object_set(bg, "base/theme/background", "desktop/background");
|
||||||
im = e_widget_image_add_from_object(evas, bg, 200, 160);
|
im = e_widget_image_add_from_object(evas, bg, pw, ph);
|
||||||
}
|
}
|
||||||
|
|
||||||
cfd->data = im;
|
cfd->data = im;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,8 @@ e_widget_image_add_from_object(Evas *evas, Evas_Object *object, int minw, int mi
|
||||||
|
|
||||||
evas_object_show(object);
|
evas_object_show(object);
|
||||||
o = e_icon_add(evas);
|
o = e_icon_add(evas);
|
||||||
e_icon_object_set(o, object);
|
e_icon_fill_inside_set(o, 1);
|
||||||
|
e_icon_object_set(o, object);
|
||||||
wd->img = o;
|
wd->img = o;
|
||||||
e_widget_data_set(obj, wd);
|
e_widget_data_set(obj, wd);
|
||||||
e_widget_can_focus_set(obj, 0);
|
e_widget_can_focus_set(obj, 0);
|
||||||
|
@ -44,6 +45,7 @@ e_widget_image_add_from_file(Evas *evas, char *file, int minw, int minh)
|
||||||
wd = calloc(1, sizeof(E_Widget_Data));
|
wd = calloc(1, sizeof(E_Widget_Data));
|
||||||
|
|
||||||
o = e_icon_add(evas);
|
o = e_icon_add(evas);
|
||||||
|
e_icon_fill_inside_set(o, 1);
|
||||||
o2 = evas_object_image_add(evas);
|
o2 = evas_object_image_add(evas);
|
||||||
evas_object_image_file_set(o2, file, NULL);
|
evas_object_image_file_set(o2, file, NULL);
|
||||||
e_icon_object_set(o, o2);
|
e_icon_object_set(o, o2);
|
||||||
|
|
Loading…
Reference in New Issue