From 2330aec15da4626a985c419e07efa8758356b287 Mon Sep 17 00:00:00 2001 From: Hosang Kim Date: Tue, 11 Jul 2017 16:25:44 +0900 Subject: [PATCH] slider: Allow range limitations 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 | 4 ++++ src/lib/edje/edje_util.c | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c index 0087ebd..8ae39f2 100644 --- a/src/lib/edje/edje_calc.c +++ b/src/lib/edje/edje_calc.c @@ -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; diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c index b054a85..5914d1f 100644 --- a/src/lib/edje/edje_util.c +++ b/src/lib/edje/edje_util.c @@ -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)) -- 2.7.4