slider: Allow range limitations 96/139196/3
authorHosang Kim <hosang12.kim@samsung.com>
Tue, 11 Jul 2017 07:25:44 +0000 (16:25 +0900)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Fri, 21 Jul 2017 05:52:10 +0000 (05:52 +0000)
Summary:
When user drags slider, slider value cannot be changed by API.
However the necessity of above behavior has emerged.
Because sometimes applications want limitation of slider value.

Test Plan: elementary_test -> slider -> Limited

Reviewers: woohyun, cedric, SanghyeonLee, singh.amitesh, jpeg

Reviewed By: jpeg

Subscribers: cedric, jpeg

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

Change-Id: I57bd9152ec26d0f3d74c80c0baefa09b5224568d

src/lib/edje/edje_calc.c
src/lib/edje/edje_util.c

index 0087ebd..8ae39f2 100644 (file)
@@ -1061,12 +1061,14 @@ _edje_dragable_pos_set(Edje *ed, Edje_Real_Part *ep, FLOAT_T x, FLOAT_T y)
 {
    /* check whether this part is dragable at all */
    if (!ep->drag) return;
+   if (ep->drag->down.count > 0) return;
 
    /* instead of checking for equality, we really should check that
     * the difference is greater than foo, but I have no idea what
     * value we would set foo to, because it would depend on the
     * size of the dragable...
     */
+
    if (ep->drag->x != x || ep->drag->tmp.x)
      {
         ep->drag->x = x;
@@ -4855,7 +4857,9 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
         dy = ZERO;
         _edje_part_dragable_calc(ed, ep, &dx, &dy);
         ep->drag->x = dx;
+        ep->drag->val.x = dx;
         ep->drag->y = dy;
+        ep->drag->val.y = dy;
         ep->drag->tmp.x = 0;
         ep->drag->tmp.y = 0;
         ep->drag->need_reset = 0;
index b054a85..5914d1f 100644 (file)
@@ -4346,7 +4346,6 @@ _edje_object_part_drag_value_set(Eo *obj EINA_UNUSED, Edje *ed, const char *part
    rp = _edje_real_part_recursive_get(&ed, part);
    if (!rp) return EINA_FALSE;
    if (!rp->drag) return EINA_FALSE;
-   if (rp->drag->down.count > 0) return EINA_FALSE;
 
    EINA_LIST_FOREACH(ed->user_defined, l, eud)
      if (eud->type == EDJE_USER_DRAG_VALUE && !strcmp(part, eud->part))
@@ -4656,7 +4655,6 @@ _edje_object_part_drag_step(Eo *obj EINA_UNUSED, Edje *ed, const char *part, dou
    rp = _edje_real_part_recursive_get(&ed, part);
    if (!rp) return EINA_FALSE;
    if (!rp->drag) return EINA_FALSE;
-   if (rp->drag->down.count > 0) return EINA_FALSE;
 
    EINA_LIST_FOREACH(ed->user_defined, l, eud)
      if (eud->type == EDJE_USER_DRAG_STEP && !strcmp(part, eud->part))
@@ -4708,7 +4706,6 @@ _edje_object_part_drag_page(Eo *obj EINA_UNUSED, Edje *ed, const char *part, dou
    rp = _edje_real_part_recursive_get(&ed, part);
    if (!rp) return EINA_FALSE;
    if (!rp->drag) return EINA_FALSE;
-   if (rp->drag->down.count > 0) return EINA_FALSE;
 
    EINA_LIST_FOREACH(ed->user_defined, l, eud)
      if (eud->type == EDJE_USER_DRAG_PAGE && !strcmp(part, eud->part))