From d442208d0a56a32e3f6f64443c55ab57283b7b9f Mon Sep 17 00:00:00 2001 From: tsauerbeck Date: Sat, 11 Dec 2004 19:22:55 +0000 Subject: [PATCH] smarter _edje_dragable_pos_set() SVN revision: 12450 --- legacy/edje/src/lib/edje_calc.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/legacy/edje/src/lib/edje_calc.c b/legacy/edje/src/lib/edje_calc.c index f5f3acf6da..3b4c378f32 100644 --- a/legacy/edje/src/lib/edje_calc.c +++ b/legacy/edje/src/lib/edje_calc.c @@ -211,17 +211,29 @@ _edje_part_dragable_calc(Edje *ed, Edje_Real_Part *ep, double *x, double *y) void _edje_dragable_pos_set(Edje *ed, Edje_Real_Part *ep, double x, double y) { - if ((ep->part->dragable.x) || (ep->part->dragable.y)) + double diff; + + /* check whether this part is dragable at all */ + if (!ep->part->dragable.x && !ep->part->dragable.y) 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.x = x; - ep->drag.y = y; + ed->dirty = 1; } - /* FIXME: is this right? shouldn't we only request a recalc if we - * actually changed the values? - */ - ed->dirty = 1; - _edje_recalc(ed); + if (ep->drag.y != y) + { + ep->drag.y = y; + ed->dirty = 1; + } + + _edje_recalc(ed); /* won't do anything if dirty flag isn't set */ } static void