efl_ui_image: fix to call "clicked" smart callback when there is no img
authorWooHyun Jung <wh0705.jung@samsung.com>
Mon, 18 May 2020 03:39:59 +0000 (12:39 +0900)
committerJongmin Lee <jm105.lee@samsung.com>
Mon, 18 May 2020 21:38:21 +0000 (06:38 +0900)
Summary:
Some applications have used "clicked" smart callback from elm_image which
does not have an image in it.
To keep backward compatibility, hit_rect needs to be resized properly to
call smart callback function.

@fix

Reviewers: Hermet, jsuya, kimcinoo

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11840

src/lib/elementary/efl_ui_image.c

index 1e1e397..ce47241 100644 (file)
@@ -184,6 +184,7 @@ _image_sizing_eval(Eo *obj, Efl_Ui_Image_Data *sd, Evas_Object *img)
 {
    Evas_Coord x = 0, y = 0, w = 1, h = 1;
    int ox, oy, ow, oh;
+   Eina_Bool img_no_resize = EINA_FALSE;
 
    evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
    if (efl_isa(img, EFL_CANVAS_LAYOUT_CLASS))
@@ -205,9 +206,7 @@ _image_sizing_eval(Eo *obj, Efl_Ui_Image_Data *sd, Evas_Object *img)
         //Exception Case
         if ((iw == 0) || (ih == 0) || (ow == 0) || (oh == 0))
           {
-             evas_object_resize(img, 0, 0);
-             evas_object_resize(sd->hit_rect, 0, 0);
-             return;
+             img_no_resize = EINA_TRUE;
           }
 
         iw = ((double)iw) * sd->scale;
@@ -309,7 +308,10 @@ _image_sizing_eval(Eo *obj, Efl_Ui_Image_Data *sd, Evas_Object *img)
           }
      }
 done:
-   evas_object_geometry_set(img, x, y, w, h);
+   if (img_no_resize)
+     evas_object_geometry_set(img, 0, 0, 0, 0);
+   else
+     evas_object_geometry_set(img, x, y, w, h);
 
    evas_object_geometry_set(sd->hit_rect, x, y, w, h);
 }