static Eina_Bool _key_action_activate(Evas_Object *obj, const char *params);
static Eina_Error _efl_ui_image_smart_internal_file_set(Eo *obj, Efl_Ui_Image_Data *sd);
static void _efl_ui_image_remote_copier_cancel(Eo *obj, Efl_Ui_Image_Data *sd);
-void _efl_ui_image_sizing_eval(Evas_Object *obj);
static void _efl_ui_image_model_properties_changed_cb(void *data, const Efl_Event *event);
static void _on_size_hints_changed(void *data, const Efl_Event *e);
static Eina_Bool _efl_ui_image_download(Eo *obj, Efl_Ui_Image_Data *sd, const char *url);
return _efl_ui_image_async_file_set(obj, sd);
/* FIXME: do i want to update icon on file change ? */
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
return 0;
}
sd->img_y = pos.y;
/* takes care of moving */
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
}
EOLIAN static void
sd->img_h = sz.h;
/* takes care of resizing */
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
super:
efl_gfx_entity_size_set(efl_super(obj, MY_CLASS), sz);
int_ret = efl_ui_widget_theme_apply(efl_super(obj, MY_CLASS));
if (int_ret == EFL_UI_THEME_APPLY_ERROR_GENERIC) return int_ret;
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
return int_ret;
}
return EINA_TRUE;
}
-void
-_efl_ui_image_sizing_eval(Evas_Object *obj)
+static void
+_efl_ui_image_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Image_Data *sd)
{
- EFL_UI_IMAGE_DATA_GET_OR_RETURN(obj, sd);
-
Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1;
Eina_Size2D sz;
double ts;
+ sd->in_calc = EINA_TRUE;
// TODO: remove this function after using the widget's scale value instead of image's scale value,
if (sd->no_scale)
sd->scale = 1.0;
_image_sizing_eval(sd, sd->img);
if (sd->prev_img) _image_sizing_eval(sd, sd->prev_img);
}
+ sd->in_calc = EINA_FALSE;
}
static void
}
static void
-_on_size_hints_changed(void *data EINA_UNUSED, const Efl_Event *ev)
+_on_size_hints_changed(void *data, const Efl_Event *ev)
{
- _efl_ui_image_sizing_eval(ev->object);
+ Efl_Ui_Image_Data *pd = data;
+ if (!pd->in_calc)
+ efl_canvas_group_change(ev->object);
}
static void
evas_object_image_preload(sd->img, EINA_FALSE);
}
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
}
static Eina_Error
evas_object_image_preload(sd->img, EINA_FALSE);
}
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
return 0;
}
if (sd->orient == orient) return;
sd->orient = orient;
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
}
EOLIAN static Efl_Gfx_Image_Orientation
sd->scale_type = scale_type;
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
}
EOLIAN static Efl_Gfx_Image_Scale_Type
sd->scale_up = !!up;
sd->scale_down = !!down;
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
}
EOLIAN static void
sd->align_x = align_x;
sd->align_y = align_y;
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
}
EOLIAN static void
if (ret)
{
eina_stringshare_replace(&sd->stdicon, name);
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
return EINA_TRUE;
}
else
{
EINA_SAFETY_ON_FALSE_RETURN(efl_isa(obj, MY_CLASS));
efl_gfx_image_smooth_scale_set(obj, smooth);
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
}
EAPI Eina_Bool
EFL_UI_IMAGE_CHECK(obj) EINA_FALSE;
ret = efl_file_simple_load(obj, file, group);
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
return ret;
}
return EINA_FALSE;
}
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
return EINA_TRUE;
}
else
sd->scale_type = EFL_GFX_IMAGE_SCALE_TYPE_FILL;
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
}
EAPI Eina_Bool
EFL_UI_IMAGE_DATA_GET(obj, sd);
sd->no_scale = no_scale;
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
}
EAPI Eina_Bool
sd->scale_up = !!up;
sd->scale_down = !!down;
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
}
EAPI void
else
sd->scale_type = EFL_GFX_IMAGE_SCALE_TYPE_FILL;
- _efl_ui_image_sizing_eval(obj);
+ efl_canvas_group_change(obj);
}
EAPI Eina_Bool
/* Internal EO APIs and hidden overrides */
#define EFL_UI_IMAGE_EXTRA_OPS \
- EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_image)
+ EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_image), \
+ EFL_CANVAS_GROUP_CALC_OPS(efl_ui_image)
#include "efl_ui_image.eo.c"