efl_ui_image: migrate to efl.ui.clickable
authorMarcel Hollerbach <mail@marcel-hollerbach.de>
Tue, 14 May 2019 19:50:39 +0000 (15:50 -0400)
committerJunsuChoi <jsuya.choi@samsung.com>
Thu, 30 May 2019 08:17:51 +0000 (17:17 +0900)
Summary:
the mixin is now used to emit the events of the mixins. This is verified
by the testsuite. The testsuite needs a special treatment for the
object, because a missing image-file of the object would result in a 0x0
image size.

Depends on D8822

Reviewers: zmike, segfaultxavi, cedric

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

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

src/lib/elementary/efl_ui_image.c
src/lib/elementary/efl_ui_image_zoomable.c
src/tests/elementary/spec/efl_test_clickable.c

index 67faa46..4ff4a23 100644 (file)
@@ -7,6 +7,7 @@
 #define EFL_ACCESS_COMPONENT_PROTECTED
 #define EFL_ACCESS_WIDGET_ACTION_PROTECTED
 #define EFL_LAYOUT_CALC_PROTECTED
+#define EFL_UI_CLICKABLE_PROTECTED
 
 #include <Elementary.h>
 
@@ -120,10 +121,7 @@ _on_mouse_up(void *data,
    if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
    if (!wd->still_in) return;
 
-   if (elm_widget_is_legacy(obj))
-     evas_object_smart_callback_call(data, "clicked", NULL);
-   else
-     efl_event_callback_call(data, EFL_UI_EVENT_CLICKED, NULL);
+   evas_object_smart_callback_call(data, "clicked", NULL);
 }
 
 static Eina_Bool
@@ -581,8 +579,15 @@ _efl_ui_image_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Image_Data *priv)
    evas_object_show(priv->hit_rect);
    evas_object_repeat_events_set(priv->hit_rect, EINA_TRUE);
 
-   evas_object_event_callback_add
-      (priv->hit_rect, EVAS_CALLBACK_MOUSE_UP, _on_mouse_up, obj);
+   if (elm_widget_is_legacy(obj))
+     {
+        evas_object_event_callback_add
+          (priv->hit_rect, EVAS_CALLBACK_MOUSE_UP, _on_mouse_up, obj);
+     }
+   else
+     {
+        efl_ui_clickable_util_bind_to_object(priv->hit_rect, obj);
+     }
 
    priv->smooth = EINA_TRUE;
    priv->fill_inside = EINA_TRUE;
index 78176cd..7ff9f8f 100644 (file)
@@ -6,6 +6,7 @@
 #define EFL_ACCESS_WIDGET_ACTION_PROTECTED
 #define EFL_UI_SCROLL_MANAGER_PROTECTED
 #define EFL_UI_SCROLLBAR_PROTECTED
+#define EFL_UI_CLICKABLE_PROTECTED
 
 #include <Elementary.h>
 
@@ -843,19 +844,6 @@ _zoom_anim_cb(void *data, const Efl_Event *event EINA_UNUSED)
      }
 }
 
-static Eina_Bool
-_long_press_cb(void *data)
-{
-   EFL_UI_IMAGE_ZOOMABLE_DATA_GET(data, sd);
-
-   sd->long_timer = NULL;
-   sd->longpressed = EINA_TRUE;
-   efl_event_callback_legacy_call
-     (data, EFL_UI_EVENT_LONGPRESSED, NULL);
-
-   return ECORE_CALLBACK_CANCEL;
-}
-
 static void
 _mouse_down_cb(void *data,
                Evas *evas EINA_UNUSED,
@@ -869,24 +857,14 @@ _mouse_down_cb(void *data,
    if (ev->button != 1) return;
    if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) sd->on_hold = EINA_TRUE;
    else sd->on_hold = EINA_FALSE;
+
    if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
      {
         if (elm_widget_is_legacy(data))
           evas_object_smart_callback_call(data, "clicked,double", NULL);
-        else
-          {
-             Efl_Ui_Clickable_Clicked clicked;
-             clicked.repeated = 1;
-             clicked.button = 1;
-             efl_event_callback_call(data, EFL_UI_EVENT_CLICKED, &clicked);
-          }
      }
    else
      efl_event_callback_legacy_call(data, EFL_UI_IMAGE_ZOOMABLE_EVENT_PRESS, NULL);
-   sd->longpressed = EINA_FALSE;
-   ecore_timer_del(sd->long_timer);
-   sd->long_timer = ecore_timer_add
-       (_elm_config->longpress_timeout, _long_press_cb, data);
 }
 
 static void
@@ -902,13 +880,11 @@ _mouse_up_cb(void *data,
    if (ev->button != 1) return;
    if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) sd->on_hold = EINA_TRUE;
    else sd->on_hold = EINA_FALSE;
-   ELM_SAFE_FREE(sd->long_timer, ecore_timer_del);
+
    if (!sd->on_hold)
      {
         if (elm_widget_is_legacy(data))
           evas_object_smart_callback_call(data, "clicked", NULL);
-        else
-          efl_event_callback_call(data, EFL_UI_EVENT_CLICKED, NULL);
      }
    sd->on_hold = EINA_FALSE;
 }
@@ -1902,6 +1878,7 @@ _efl_ui_image_zoomable_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Image_Zoomable
      (priv->img, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, obj);
    evas_object_event_callback_add
      (priv->img, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, obj);
+   efl_ui_clickable_util_bind_to_object(priv->img, obj);
    evas_object_image_scale_hint_set(priv->img, EVAS_IMAGE_SCALE_HINT_STATIC);
 
    /* XXX: mmm... */
@@ -1950,7 +1927,6 @@ _efl_ui_image_zoomable_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Image_Zoomable
    eina_stringshare_del(sd->file);
    ecore_job_del(sd->calc_job);
    ecore_timer_del(sd->scr_timer);
-   ecore_timer_del(sd->long_timer);
    efl_event_callback_del(obj, EFL_CANVAS_OBJECT_EVENT_ANIMATOR_TICK, _zoom_anim_cb, obj);
    efl_event_callback_del(obj, EFL_CANVAS_OBJECT_EVENT_ANIMATOR_TICK, _bounce_eval, obj);
    efl_event_callback_del(obj, EFL_UI_EVENT_SCROLL, _scroll_cb, obj);
index f241deb..554c782 100644 (file)
@@ -8,7 +8,7 @@
 
 /* spec-meta-start
       {"test-interface":"Efl.Ui.Clickable",
-       "test-widgets": ["Efl.Ui.Button"]
+       "test-widgets": ["Efl.Ui.Button", "Efl.Ui.Image"]
        }
    spec-meta-end
  */
@@ -45,6 +45,14 @@ prepare_window(void)
    pos->x = 30;
    pos->y = 30;
 
+   if (efl_isa(widget, EFL_UI_IMAGE_CLASS))
+     {
+        efl_gfx_hint_size_min_set(widget, EINA_SIZE2D(200, 200));
+        efl_file_simple_load(widget, ELM_IMAGE_DATA_DIR"/images/bubble.png", NULL);
+        pos->x = 100;
+        pos->y = 100;
+     }
+
    evas_smart_objects_calculate(evas_object_evas_get(win));
    evas_event_callback_add(evas_object_evas_get(win), EVAS_CALLBACK_RENDER_POST, prepare_window_norendered, pos);
    efl_loop_begin(efl_app_main_get());