scroller: fix to support non legacy widget Efl.Ui.Scroller 06/203706/4
authorJaehyun Cho <jae_hyun.cho@samsung.com>
Thu, 4 Apr 2019 07:56:43 +0000 (16:56 +0900)
committerTaehyub Kim <taehyub.kim@samsung.com>
Thu, 18 Apr 2019 02:15:49 +0000 (11:15 +0900)
The non legacy widget class name is fixed to "Efl.Ui.Scroller".

Change-Id: I8347aef074bc8fa3990020ed2d35c2395cf0e1d0

src/wearable/circle/efl_extension_circle_object_scroller.c

index dee99fc5d1310e93052e5ca69c18a560e5a57c58..827344a703ebcf28e7b379f8ace53305e6f17032 100644 (file)
@@ -188,25 +188,25 @@ _eext_circle_object_scroller_scrollbar_update(Eext_Circle_Object *obj,
    Eina_Position2D pos;
 
    //C# FIXME: Optimize the code
-   if (!strcmp(efl_class_name_get(obj->widget_object), "Scroller"))
+   if (efl_isa(obj->widget_object, EFL_UI_LEGACY_INTERFACE))
      {
-       size = efl_ui_scrollable_content_size_get(obj->widget_object);
-       rect = efl_ui_scrollable_viewport_geometry_get(obj->widget_object);
-       pos = efl_ui_scrollable_content_pos_get(obj->widget_object);
-
-       content_w = size.w;
-       content_h = size.h;
-
-       viewport_w = rect.w;
-       viewport_h = rect.h;
-
-       position_x = pos.x;
-       position_y = pos.y;
+        elm_scroller_child_size_get(scroller, &content_w, &content_h);
+        elm_scroller_region_get(scroller, &position_x, &position_y, &viewport_w, &viewport_h);
      }
    else
      {
-        elm_scroller_child_size_get(scroller, &content_w, &content_h);
-        elm_scroller_region_get(scroller, &position_x, &position_y, &viewport_w, &viewport_h);
+        size = efl_ui_scrollable_content_size_get(obj->widget_object);
+        rect = efl_ui_scrollable_viewport_geometry_get(obj->widget_object);
+        pos = efl_ui_scrollable_content_pos_get(obj->widget_object);
+
+        content_w = size.w;
+        content_h = size.h;
+
+        viewport_w = rect.w;
+        viewport_h = rect.h;
+
+        position_x = pos.x;
+        position_y = pos.y;
      }
 
    item = _eext_circle_object_item_get(obj, VERTICAL_BAR_NAME);
@@ -466,70 +466,73 @@ _eext_circle_object_scroller_rotary_changed_cb(void *data,
    scroll_locked_y = elm_object_scroll_lock_y_get(scroller);
 
    //C# FIXME: Apply center alignment
-   if (!strcmp(efl_class_name_get(scroller), "Scroller"))
-     {
-        Eina_Position2D pos = efl_ui_scrollable_content_pos_get(scroller);
-        Eina_Rect rect = efl_ui_scrollable_viewport_geometry_get(scroller);
-        if (widget_data->policy_v == ELM_SCROLLER_POLICY_AUTO)
-          rect.y = pos.y + (d * widget_data->step_y);
-        else
-          rect.x = pos.x + (d * widget_data->step_x);
-
-        efl_ui_scrollable_scroll(scroller, rect, EINA_TRUE);
-     }
-   else if ((h_pagesize > 0) || (v_pagesize > 0))
+   if (efl_isa(scroller, EFL_UI_LEGACY_INTERFACE))
      {
-        int h_current_page, v_current_page;
-
-        // Handle scroll per page
-        elm_scroller_current_page_get(scroller, &h_current_page, &v_current_page);
-
-        if (!scroll_locked_y &&
-            !(scroller_block & ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL) &&
-            (ch > h) && (v_pagesize > 0))
+        if ((h_pagesize > 0) || (v_pagesize > 0))
           {
-             v_current_page += d;
+             int h_current_page, v_current_page;
+
+             // Handle scroll per page
+             elm_scroller_current_page_get(scroller, &h_current_page, &v_current_page);
+
+             if (!scroll_locked_y &&
+                 !(scroller_block & ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL) &&
+                 (ch > h) && (v_pagesize > 0))
+               {
+                  v_current_page += d;
+               }
+             else if (!scroll_locked_x &&
+                      !(scroller_block & ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL) &&
+                      (cw > w) && (h_pagesize > 0))
+               {
+                  h_current_page += d;
+               }
+
+             if (v_current_page < 0) v_current_page = 0;
+             if (h_current_page < 0) h_current_page = 0;
+
+             elm_scroller_page_bring_in(scroller, h_current_page,v_current_page);
           }
-        else if (!scroll_locked_x &&
-                 !(scroller_block & ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL) &&
-                 (cw > w) && (h_pagesize > 0))
+        else
           {
-             h_current_page += d;
+             // Handle scroll
+             if (!scroll_locked_y &&
+                 !(scroller_block & ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL) &&
+                 (ch > h))
+               {
+                  y += d * widget_data->step_y;
+               }
+             else if (!scroll_locked_x &&
+                      !(scroller_block & ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL) &&
+                      (cw > w))
+               {
+                  if (circle_obj->mirrored_state == EEXT_CIRCLE_MIRRORED_CONFIG)
+                    is_mirrored = elm_config_mirrored_get();
+                  else if (circle_obj->mirrored_state == EEXT_CIRCLE_MIRRORED_ON)
+                    is_mirrored = EINA_TRUE;
+
+                  if (is_mirrored)
+                    d *= -1;
+
+                  x += d * widget_data->step_x;
+               }
+
+             if (y < 0) y = 0;
+             if (x < 0) x = 0;
+
+             elm_scroller_region_bring_in(scroller, x, y, w, h);
           }
-
-        if (v_current_page < 0) v_current_page = 0;
-        if (h_current_page < 0) h_current_page = 0;
-
-        elm_scroller_page_bring_in(scroller, h_current_page,v_current_page);
      }
    else
      {
-        // Handle scroll
-        if (!scroll_locked_y &&
-            !(scroller_block & ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL) &&
-            (ch > h))
-          {
-             y += d * widget_data->step_y;
-          }
-        else if (!scroll_locked_x &&
-                 !(scroller_block & ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL) &&
-                 (cw > w))
-          {
-             if (circle_obj->mirrored_state == EEXT_CIRCLE_MIRRORED_CONFIG)
-               is_mirrored = elm_config_mirrored_get();
-             else if (circle_obj->mirrored_state == EEXT_CIRCLE_MIRRORED_ON)
-               is_mirrored = EINA_TRUE;
-
-             if (is_mirrored)
-               d *= -1;
-
-             x += d * widget_data->step_x;
-          }
-
-        if (y < 0) y = 0;
-        if (x < 0) x = 0;
+        Eina_Position2D pos = efl_ui_scrollable_content_pos_get(scroller);
+        Eina_Rect rect = efl_ui_scrollable_viewport_geometry_get(scroller);
+        if (widget_data->policy_v == ELM_SCROLLER_POLICY_AUTO)
+          rect.y = pos.y + (d * widget_data->step_y);
+        else
+          rect.x = pos.x + (d * widget_data->step_x);
 
-        elm_scroller_region_bring_in(scroller, x, y, w, h);
+        efl_ui_scrollable_scroll(scroller, rect, EINA_TRUE);
      }
 
    return EINA_TRUE;
@@ -722,15 +725,15 @@ _eext_circle_object_scroller_init(Eext_Circle_Object *obj, Evas_Object *scroller
    _eext_circle_object_item_round_cap_enable_set(item, EINA_TRUE);
    _eext_circle_object_item_append(obj, item);
 
-   if (!strcmp(efl_class_name_get(obj->widget_object), "Scroller"))
+   if (efl_isa(obj->widget_object, EFL_UI_LEGACY_INTERFACE))
      {
-        efl_ui_scrollbar_bar_mode_set(obj->widget_object, EFL_UI_SCROLLBAR_MODE_OFF, EFL_UI_SCROLLBAR_MODE_OFF);
-        efl_event_callback_add(scroller, EFL_UI_EVENT_SCROLL, _scroll_cb, obj);
+        elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+        evas_object_smart_callback_add(scroller, "scroll", _eext_circle_object_scroller_scroll_cb, obj);
      }
    else
      {
-        elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
-        evas_object_smart_callback_add(scroller, "scroll", _eext_circle_object_scroller_scroll_cb, obj);
+        efl_ui_scrollbar_bar_mode_set(obj->widget_object, EFL_UI_SCROLLBAR_MODE_OFF, EFL_UI_SCROLLBAR_MODE_OFF);
+        efl_event_callback_add(scroller, EFL_UI_EVENT_SCROLL, _scroll_cb, obj);
      }
 
    evas_object_event_callback_add(scroller, EVAS_CALLBACK_SHOW, _eext_circle_object_scroller_show_cb, obj);