EEXT_CIRCLE_OBJECT_SCROLLER_DATA_GET(obj, data) return;
- elm_scroller_child_size_get(scroller, &content_w, &content_h);
- elm_scroller_region_get(scroller, &position_x, &position_y, &viewport_w, &viewport_h);
+ Eina_Size2D size;
+ Eina_Rect rect;
+ Eina_Position2D pos;
+
+ //C# FIXME: Optimize the code
+ if (!strcmp(efl_class_name_get(obj->widget_object), "Scroller"))
+ {
+ 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;
+ }
+ else
+ {
+ elm_scroller_child_size_get(scroller, &content_w, &content_h);
+ elm_scroller_region_get(scroller, &position_x, &position_y, &viewport_w, &viewport_h);
+ }
item = _eext_circle_object_item_get(obj, VERTICAL_BAR_NAME);
bg_item = _eext_circle_object_item_get(obj, VERTICAL_BAR_BG_NAME);
}
}
+//C# FIXME: Optimize the code
+static void
+_scroll_cb(void *data EINA_UNUSED, const Efl_Event *ev)
+{
+ Eext_Circle_Object *circle_obj = (Eext_Circle_Object *)data;
+
+ EEXT_CIRCLE_OBJECT_SCROLLER_DATA_GET(circle_obj, widget_data) return;
+
+ if ((widget_data->policy_v == ELM_SCROLLER_POLICY_OFF) &&
+ (widget_data->policy_h == ELM_SCROLLER_POLICY_OFF))
+ return;
+
+ _eext_circle_object_scroller_scrollbar_update(circle_obj,
+ 0.3);
+}
+
static void
_eext_circle_object_scroller_scroll_cb(void *data,
Evas_Object *obj,
scroll_locked_x = elm_object_scroll_lock_x_get(scroller);
scroll_locked_y = elm_object_scroll_lock_y_get(scroller);
- if ((h_pagesize > 0) || (v_pagesize > 0))
+ //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))
{
int h_current_page, v_current_page;
_eext_circle_object_item_round_cap_enable_set(item, EINA_TRUE);
_eext_circle_object_item_append(obj, item);
- elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+ if (!strcmp(efl_class_name_get(obj->widget_object), "Scroller"))
+ {
+ 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);
+ }
+ 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);
+ }
+
evas_object_event_callback_add(scroller, EVAS_CALLBACK_SHOW, _eext_circle_object_scroller_show_cb, obj);
- evas_object_smart_callback_add(scroller, "scroll", _eext_circle_object_scroller_scroll_cb, obj);
+
evas_object_smart_callback_add(scroller, "content,resize", _eext_circle_object_scroller_content_resize_cb, obj);
eext_rotary_object_event_callback_add(scroller, _eext_circle_object_scroller_rotary_changed_cb, obj);