hermet pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=f026000c1eb3967ad123c2239aeb7db3ce70dbf6

commit f026000c1eb3967ad123c2239aeb7db3ce70dbf6
Author: WooHyun Jung <[email protected]>
Date:   Mon May 18 12:39:59 2020 +0900

    efl_ui_image: fix to call "clicked" smart callback when there is no img
    
    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 | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/lib/elementary/efl_ui_image.c 
b/src/lib/elementary/efl_ui_image.c
index 7cb96970b0..4dea543391 100644
--- a/src/lib/elementary/efl_ui_image.c
+++ b/src/lib/elementary/efl_ui_image.c
@@ -181,6 +181,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))
@@ -202,9 +203,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;
@@ -306,7 +305,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);
 }

-- 


Reply via email to