//
//This function adjusts the size of the bar.
static void
-_elm_scroll_scroll_bar_size_adjust(Elm_Scrollable_Smart_Interface_Data *sid)
+_elm_scroll_scroll_bar_size_adjust_internal(Elm_Scrollable_Smart_Interface_Data *sid)
{
if (!sid->pan_obj || !sid->edje_obj) return;
- if (sid->size_adjust_recurse_abort) return;
- if (sid->size_adjust_recurse > 20)
- {
- sid->size_adjust_recurse_abort = EINA_TRUE;
- return;
- }
- sid->size_adjust_recurse++;
+ sid->adjust_job.bar_size_adjust = NULL;
+
if ((sid->content) || (sid->extern_pan))
{
Evas_Coord w, h, vw = 0, vh = 0;
(sid->edje_obj, "elm.dragable.hbar", 1.0, 1.0);
}
_elm_scroll_scroll_bar_visibility_adjust(sid);
- sid->size_adjust_recurse--;
- if (sid->size_adjust_recurse <= 0)
- {
- sid->size_adjust_recurse = 0;
- sid->size_adjust_recurse_abort = EINA_FALSE;
- }
}
+
+static void
+_elm_scroll_scroll_bar_size_adjust(Elm_Scrollable_Smart_Interface_Data *sid)
+{
+ if (!sid->pan_obj || !sid->edje_obj) return;
+
+ if (!sid->adjust_job.bar_size_adjust)
+ sid->adjust_job.bar_size_adjust
+ = ecore_job_add(_elm_scroll_scroll_bar_size_adjust_internal, sid);
+}
+
//This function adjusts the position of the bar.
static void
-_elm_scroll_scroll_bar_pos_adjust(Elm_Scrollable_Smart_Interface_Data *sid)
+_elm_scroll_scroll_bar_pos_adjust_internal(Elm_Scrollable_Smart_Interface_Data *sid)
{
if (!sid->pan_obj || !sid->edje_obj) return;
+ sid->adjust_job.bar_pos_adjust = NULL;
+
if ((sid->content) || (sid->extern_pan))
{
Evas_Coord x, y, w, h, mx = 0, my = 0, vw = 0, vh = 0,
edje_object_signal_emit(sid->edje_obj, "elm,action,scroll", "elm");
}
}
+
+static void
+_elm_scroll_scroll_bar_pos_adjust(Elm_Scrollable_Smart_Interface_Data *sid)
+{
+ if (!sid->pan_obj || !sid->edje_obj) return;
+
+ if (!sid->adjust_job.bar_pos_adjust)
+ sid->adjust_job.bar_pos_adjust
+ = ecore_job_add(_elm_scroll_scroll_bar_pos_adjust_internal, sid);
+}
+
+
//
//TIZEN_ONLY(20150909) : Use the specific bar_chagnged_bar_pos_adjust func only for gengrid.
{
Evas_Coord w = 0, h = 0;
Elm_Scrollable_Smart_Interface_Data *sid = data;
- //TIZEN_ONLY(20151013): Check the validity of pan value
- Evas_Coord pan_x = 0, pan_y = 0, minx = 0, miny = 0, mx = 0, my = 0;
-
- eo_do(sid->pan_obj, elm_obj_pan_pos_get(&pan_x, &pan_y));
- eo_do(sid->pan_obj, elm_obj_pan_pos_min_get(&minx, &miny));
- eo_do(sid->pan_obj, elm_obj_pan_pos_max_get(&mx, &my));
- if (pan_x < minx) pan_x = minx;
- else if (pan_x > mx + minx) pan_x = mx + minx;
-
- if (pan_y < miny) pan_y = miny;
- else if (pan_y > my + miny) pan_y = my + miny;
-
- eo_do(sid->pan_obj, elm_obj_pan_pos_set(pan_x, pan_y));
- //
if (sid->cb_func.content_viewport_resize)
{
ecore_animator_del(sid->down.bounce_y_animator);
ecore_animator_del(sid->scrollto.x.animator);
ecore_animator_del(sid->scrollto.y.animator);
+
+ ELM_SAFE_FREE(sid->adjust_job.bar_size_adjust, ecore_job_del);
+ ELM_SAFE_FREE(sid->adjust_job.bar_pos_adjust, ecore_job_del);
+ ELM_SAFE_FREE(sid->adjust_job.page_adjust, ecore_job_del);
}
EOLIAN static void