int
_edje_part_dragable_calc(Edje *ed, Edje_Real_Part *ep, double *x, double *y)
{
- if ((ep->part->dragable.x != 0) || (ep->part->dragable.y != 0))
+ if (ep->drag)
{
- if (ep->drag.confine_to)
+ if (ep->drag->confine_to)
{
double dx, dy, dw, dh;
int ret = 0;
else if (ep->part->dragable.x != 0) ret = 1;
else if (ep->part->dragable.y != 0) ret = 2;
- dx = ep->x - ep->drag.confine_to->x;
- dw = ep->drag.confine_to->w - ep->w;
+ dx = ep->x - ep->drag->confine_to->x;
+ dw = ep->drag->confine_to->w - ep->w;
if (dw != 0.0) dx /= dw;
else dx = 0.0;
- dy = ep->y - ep->drag.confine_to->y;
- dh = ep->drag.confine_to->h - ep->h;
+ dy = ep->y - ep->drag->confine_to->y;
+ dh = ep->drag->confine_to->h - ep->h;
if (dh != 0) dy /= dh;
else dy = 0.0;
}
else
{
- if (x) *x = (double)(ep->drag.tmp.x + ep->drag.x);
- if (y) *y = (double)(ep->drag.tmp.y + ep->drag.y);
+ if (x) *x = (double)(ep->drag->tmp.x + ep->drag->x);
+ if (y) *y = (double)(ep->drag->tmp.y + ep->drag->y);
return 0;
}
}
_edje_dragable_pos_set(Edje *ed, Edje_Real_Part *ep, double x, double y)
{
/* check whether this part is dragable at all */
- if (!ep->part->dragable.x && !ep->part->dragable.y) return;
+ if (!ep->drag) 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)
+ if (ep->drag->x != x || ep->drag->tmp.x)
{
- ep->drag.x = x;
- ep->drag.tmp.x = 0;
- ep->drag.need_reset = 0;
+ ep->drag->x = x;
+ ep->drag->tmp.x = 0;
+ ep->drag->need_reset = 0;
ed->dirty = 1;
}
- if (ep->drag.y != y || ep->drag.tmp.y)
+ if (ep->drag->y != y || ep->drag->tmp.y)
{
- ep->drag.y = y;
- ep->drag.tmp.y = 0;
- ep->drag.need_reset = 0;
+ ep->drag->y = y;
+ ep->drag->tmp.y = 0;
+ ep->drag->need_reset = 0;
ed->dirty = 1;
}
}
}
}
- /* confine */
- if (confine_to)
- {
- int offset;
- int step;
- double v;
- /* complex dragable params */
- if (flags & FLAG_X)
+ if (ep->drag)
+ {
+ /* confine */
+ if (confine_to)
{
- v = ep->drag.size.x * confine_to->w;
+ int offset;
+ int step;
+ double v;
- if ((minw > 0) && (v < minw)) params->w = minw;
- else if ((maxw >= 0) && (v > maxw)) params->w = maxw;
- else params->w = v;
-
- offset = (ep->drag.x * (confine_to->w - params->w)) +
- ep->drag.tmp.x;
- if (ep->part->dragable.step_x > 0)
+ /* complex dragable params */
+ if (flags & FLAG_X)
{
- params->x = confine_to->x +
- ((offset / ep->part->dragable.step_x) * ep->part->dragable.step_x);
+ v = ep->drag->size.x * confine_to->w;
+
+ if ((minw > 0) && (v < minw)) params->w = minw;
+ else if ((maxw >= 0) && (v > maxw)) params->w = maxw;
+ else params->w = v;
+
+ offset = (ep->drag->x * (confine_to->w - params->w)) +
+ ep->drag->tmp.x;
+ if (ep->part->dragable.step_x > 0)
+ {
+ params->x = confine_to->x +
+ ((offset / ep->part->dragable.step_x) * ep->part->dragable.step_x);
+ }
+ else if (ep->part->dragable.count_x > 0)
+ {
+ step = (confine_to->w - params->w) / ep->part->dragable.count_x;
+ if (step < 1) step = 1;
+ params->x = confine_to->x +
+ ((offset / step) * step);
+ }
+ params->req_drag.x = params->x;
+ params->req_drag.w = params->w;
}
- else if (ep->part->dragable.count_x > 0)
+ if (flags & FLAG_Y)
{
- step = (confine_to->w - params->w) / ep->part->dragable.count_x;
- if (step < 1) step = 1;
- params->x = confine_to->x +
- ((offset / step) * step);
- }
- params->req_drag.x = params->x;
- params->req_drag.w = params->w;
- }
- if (flags & FLAG_Y)
- {
- v = ep->drag.size.y * confine_to->h;
+ v = ep->drag->size.y * confine_to->h;
- if ((minh > 0) && (v < minh)) params->h = minh;
- else if ((maxh >= 0) && (v > maxh)) params->h = maxh;
- else params->h = v;
+ if ((minh > 0) && (v < minh)) params->h = minh;
+ else if ((maxh >= 0) && (v > maxh)) params->h = maxh;
+ else params->h = v;
- offset = (ep->drag.y * (confine_to->h - params->h)) +
- ep->drag.tmp.y;
- if (ep->part->dragable.step_y > 0)
- {
- params->y = confine_to->y +
- ((offset / ep->part->dragable.step_y) * ep->part->dragable.step_y);
+ offset = (ep->drag->y * (confine_to->h - params->h)) +
+ ep->drag->tmp.y;
+ if (ep->part->dragable.step_y > 0)
+ {
+ params->y = confine_to->y +
+ ((offset / ep->part->dragable.step_y) * ep->part->dragable.step_y);
+ }
+ else if (ep->part->dragable.count_y > 0)
+ {
+ step = (confine_to->h - params->h) / ep->part->dragable.count_y;
+ if (step < 1) step = 1;
+ params->y = confine_to->y +
+ ((offset / step) * step);
+ }
+ params->req_drag.y = params->y;
+ params->req_drag.h = params->h;
}
- else if (ep->part->dragable.count_y > 0)
+ /* limit to confine */
+ if (flags & FLAG_X)
{
- step = (confine_to->h - params->h) / ep->part->dragable.count_y;
- if (step < 1) step = 1;
- params->y = confine_to->y +
- ((offset / step) * step);
- }
- params->req_drag.y = params->y;
- params->req_drag.h = params->h;
- }
- /* limit to confine */
- if (flags & FLAG_X)
- {
- if (params->x < confine_to->x)
- {
- params->x = confine_to->x;
+ if (params->x < confine_to->x)
+ {
+ params->x = confine_to->x;
+ }
+ if ((params->x + params->w) > (confine_to->x + confine_to->w))
+ {
+ params->x = confine_to->x + (confine_to->w - params->w);
+ }
}
- if ((params->x + params->w) > (confine_to->x + confine_to->w))
+ if (flags & FLAG_Y)
{
- params->x = confine_to->x + (confine_to->w - params->w);
+ if (params->y < confine_to->y)
+ {
+ params->y = confine_to->y;
+ }
+ if ((params->y + params->h) > (confine_to->y + confine_to->h))
+ {
+ params->y = confine_to->y + (confine_to->h - params->h);
+ }
}
}
- if (flags & FLAG_Y)
+ else
{
- if (params->y < confine_to->y)
+ /* simple dragable params */
+ if (flags & FLAG_X)
{
- params->y = confine_to->y;
+ params->x += ep->drag->x + ep->drag->tmp.x;
+ params->req_drag.x = params->x;
+ params->req_drag.w = params->w;
}
- if ((params->y + params->h) > (confine_to->y + confine_to->h))
+ if (flags & FLAG_Y)
{
- params->y = confine_to->y + (confine_to->h - params->h);
+ params->y += ep->drag->y + ep->drag->tmp.y;
+ params->req_drag.y = params->y;
+ params->req_drag.h = params->h;
}
}
}
- else
- {
- /* simple dragable params */
- if (flags & FLAG_X)
- {
- params->x += ep->drag.x + ep->drag.tmp.x;
- params->req_drag.x = params->x;
- params->req_drag.w = params->w;
- }
- if (flags & FLAG_Y)
- {
- params->y += ep->drag.y + ep->drag.tmp.y;
- params->req_drag.y = params->y;
- params->req_drag.h = params->h;
- }
- }
- /* fill */
+ /* fill */
if (ep->part->type == EDJE_PART_TYPE_GRADIENT && desc->gradient.use_rel && (!desc->gradient.type || !strcmp(desc->gradient.type, "linear")))
{
int x2, y2;
#endif
Edje_Calc_Params *p1, *pf;
Edje_Part_Description *chosen_desc;
+ Edje_Real_Part *confine_to = NULL;
double pos = 0.0;
if ((ep->calculated & FLAG_XY) == FLAG_XY)
#endif
}
}
- if (ep->drag.confine_to)
+ if (ep->drag && ep->drag->confine_to)
{
- _edje_part_recalc(ed, ep->drag.confine_to, flags);
+ confine_to = ep->drag->confine_to;
+ _edje_part_recalc(ed, confine_to, flags);
#ifdef EDJE_CALC_CACHE
- statec = ep->drag.confine_to->state;
+ statec = confine_to->state;
#endif
}
// if (ep->text.source) _edje_part_recalc(ed, ep->text.source, flags);
{
_edje_part_recalc_single(ed, ep, ep->param1.description, chosen_desc,
ep->param1.rel1_to_x, ep->param1.rel1_to_y, ep->param1.rel2_to_x, ep->param1.rel2_to_y,
- ep->drag.confine_to,
+ confine_to,
p1,
flags);
#ifdef EDJE_CALC_CACHE
{
_edje_part_recalc_single(ed, ep, ep->param2.description, chosen_desc,
ep->param2.rel1_to_x, ep->param2.rel1_to_y, ep->param2.rel2_to_x, ep->param2.rel2_to_y,
- ep->drag.confine_to,
+ confine_to,
p2,
flags);
#ifdef EDJE_CALC_CACHE
#endif
ep->req = pf->req;
- if (ep->drag.need_reset)
+ if (ep->drag && ep->drag->need_reset)
{
double dx, dy;
dx = 0;
dy = 0;
_edje_part_dragable_calc(ed, ep, &dx, &dy);
- ep->drag.x = dx;
- ep->drag.y = dy;
- ep->drag.tmp.x = 0;
- ep->drag.tmp.y = 0;
- ep->drag.need_reset = 0;
+ ep->drag->x = dx;
+ ep->drag->y = dy;
+ ep->drag->tmp.x = 0;
+ ep->drag->tmp.y = 0;
+ ep->drag->need_reset = 0;
}
if (!ed->calc_only)
{
_edje_emit(ed, buf, rp->part->name);
}
- if (rp->drag.events_to)
+ if (rp->drag && rp->drag->events_to)
{
int x = 0, y = 0;
Edje_Real_Part *events;
- events = rp->drag.events_to;
+ events = rp->drag->events_to;
evas_object_geometry_get(rp->object, &x, &y, NULL, NULL);
if ((events->part->dragable.x) || (events->part->dragable.y))
{
if (events->part->dragable.x)
{
- events->drag.down.x = ev->canvas.x;
- events->drag.tmp.x = 0;
+ events->drag->down.x = ev->canvas.x;
+ events->drag->tmp.x = 0;
}
if (events->part->dragable.y)
{
- events->drag.down.y = ev->canvas.y;
- events->drag.tmp.y = 0;
+ events->drag->down.y = ev->canvas.y;
+ events->drag->tmp.y = 0;
}
if (!ignored)
dir = _edje_part_dragable_calc(ed, rp, &dx, &dy);
- if ((dx != rp->drag.val.x) || (dy != rp->drag.val.y))
+ if ((dx != rp->drag->val.x) || (dy != rp->drag->val.y))
{
- rp->drag.val.x = dx;
- rp->drag.val.y = dy;
+ rp->drag->val.x = dx;
+ rp->drag->val.y = dy;
if (!ignored)
_edje_emit(ed, "drag", rp->part->name);
ed->dirty = 1;
#ifdef EDJE_CALC_CACHE
rp->invalidate = 1;
#endif
- rp->drag.need_reset = 1;
+ rp->drag->need_reset = 1;
_edje_recalc_do(ed);
}
}
if ((rp->part->dragable.x) || (rp->part->dragable.y))
{
- if (rp->drag.down.count == 0)
+ if (rp->drag->down.count == 0)
{
if (rp->part->dragable.x)
- rp->drag.down.x = ev->canvas.x;
+ rp->drag->down.x = ev->canvas.x;
if (rp->part->dragable.y)
- rp->drag.down.y = ev->canvas.y;
+ rp->drag->down.y = ev->canvas.y;
if (!ignored)
_edje_emit(ed, "drag,start", rp->part->name);
}
- rp->drag.down.count++;
+ rp->drag->down.count++;
}
if (rp->clicked_button == 0)
{
_edje_emit(ed, buf, rp->part->name);
}
- if (rp->drag.events_to)
+ if (rp->drag)
{
- rp = rp->drag.events_to;
- if (!ignored)
+ if (rp->drag->events_to)
{
- snprintf(buf, sizeof(buf), "mouse,up,%i", ev->button);
- _edje_emit(ed, buf, rp->part->name);
+ rp = rp->drag->events_to;
+ if (!ignored)
+ {
+ snprintf(buf, sizeof(buf), "mouse,up,%i", ev->button);
+ _edje_emit(ed, buf, rp->part->name);
+ }
}
- }
- if ((rp->part->dragable.x) || (rp->part->dragable.y))
- {
- if (rp->drag.down.count > 0)
+ if (rp->drag->down.count > 0)
{
- rp->drag.down.count--;
- if (rp->drag.down.count == 0)
+ rp->drag->down.count--;
+ if (rp->drag->down.count == 0)
{
- rp->drag.need_reset = 1;
+ rp->drag->need_reset = 1;
ed->dirty = 1;
#ifdef EDJE_CALC_CACHE
rp->invalidate = 1;
}
}
}
+
if ((rp->still_in) && (rp->clicked_button == ev->button) && (!ignored))
{
snprintf(buf, sizeof(buf), "mouse,clicked,%i", ev->button);
ed = data;
rp = evas_object_data_get(obj, "real_part");
if (!rp) return;
- if (rp->drag.events_to) rp = rp->drag.events_to;
+ if (rp->drag && rp->drag->events_to) rp = rp->drag->events_to;
ignored = rp->part->ignore_flags & ev->event_flags;
rp->still_in = 1;
}
_edje_freeze(ed);
- if ((rp->part->dragable.x) || (rp->part->dragable.y))
+ if (rp->drag)
{
- if (rp->drag.down.count > 0)
+ if (rp->drag->down.count > 0)
{
if (rp->part->dragable.x)
- rp->drag.tmp.x = ev->cur.canvas.x - rp->drag.down.x;
+ rp->drag->tmp.x = ev->cur.canvas.x - rp->drag->down.x;
if (rp->part->dragable.y)
- rp->drag.tmp.y = ev->cur.canvas.y - rp->drag.down.y;
+ rp->drag->tmp.y = ev->cur.canvas.y - rp->drag->down.y;
ed->dirty = 1;
#ifdef EDJE_CALC_CACHE
rp->invalidate = 1;
#endif
}
_edje_recalc_do(ed);
- }
- if ((rp->part->dragable.x) || (rp->part->dragable.y))
- {
- if (rp->drag.down.count > 0)
+
+ if (rp->drag->down.count > 0)
{
double dx, dy;
int dir;
dir = _edje_part_dragable_calc(ed, rp, &dx, &dy);
- if ((dx != rp->drag.val.x) || (dy != rp->drag.val.y))
+ if ((dx != rp->drag->val.x) || (dy != rp->drag->val.y))
{
- rp->drag.val.x = dx;
- rp->drag.val.y = dy;
+ rp->drag->val.x = dx;
+ rp->drag->val.y = dy;
if (!ignored)
_edje_emit(ed, "drag", rp->part->name);
ed->dirty = 1;
}
evas_object_clip_set(rp->object, ed->clipper);
}
- rp->drag.step.x = ep->dragable.step_x;
- rp->drag.step.y = ep->dragable.step_y;
rp->gradient_id = -1;
GET_RP_OR_RETURN();
printf("Set dragX for part: %s\n", part);
rp->part->dragable.x = drag;
+
+ if (!drag && !rp->part->dragable.y)
+ {
+ free(rp->drag);
+ rp->drag = NULL;
+ return ;
+ }
+
+ if (rp->drag) return;
+
+ rp->drag = mem_alloc(sizeof (Edje_Real_Part_Drag));
+ if (!rp->drag) return;
+
+ rp->drag->step.x = rp->part->dragable.step_x;
+ rp->drag->step.y = rp->part->dragable.step_y;
}
EAPI int
GET_RP_OR_RETURN();
printf("Set dragY for part: %s\n", part);
rp->part->dragable.y = drag;
+
+ if (!drag && !rp->part->dragable.x)
+ {
+ free(rp->drag);
+ rp->drag = NULL;
+ return ;
+ }
+
+ if (rp->drag) return;
+
+ rp->drag = mem_alloc(sizeof (Edje_Real_Part_Drag));
+ if (!rp->drag) return;
+
+ rp->drag->step.x = rp->part->dragable.step_x;
+ rp->drag->step.y = rp->part->dragable.step_y;
}
EAPI int
ed->load_error = EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
return 0;
}
+
+ if ((ep->dragable.x != 0) || (ep->dragable.y != 0))
+ {
+ rp->drag = calloc(1, sizeof (Edje_Real_Part_Drag));
+ if (!rp->drag)
+ {
+ ed->load_error = EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
+ free(rp);
+ return 0;
+ }
+
+ rp->drag->step.x = ep->dragable.step_x;
+ rp->drag->step.y = ep->dragable.step_y;
+ }
+
rp->edje = ed;
_edje_ref(rp->edje);
rp->part = ep;
if (rp->part->clip_to_id < 0)
evas_object_clip_set(rp->object, ed->clipper);
}
- rp->drag.step.x = ep->dragable.step_x;
- rp->drag.step.y = ep->dragable.step_y;
rp->gradient_id = -1;
}
if (n > 0)
evas_object_clip_set(rp->object, rp->clip_to->object);
}
}
- if (rp->part->dragable.confine_id >= 0)
- rp->drag.confine_to = ed->table_parts[rp->part->dragable.confine_id % ed->table_parts_size];
-
- /* replay events for dragable */
- if (rp->part->dragable.events_id >= 0)
+ if (rp->drag)
{
- rp->drag.events_to =
- ed->table_parts[rp->part->dragable.events_id % ed->table_parts_size];
- /* events_to may be used only with dragable */
- if (!rp->drag.events_to->part->dragable.x &&
- !rp->drag.events_to->part->dragable.y)
- rp->drag.events_to = NULL;
+ if (rp->part->dragable.confine_id >= 0)
+ rp->drag->confine_to = ed->table_parts[rp->part->dragable.confine_id % ed->table_parts_size];
+
+ /* replay events for dragable */
+ if (rp->part->dragable.events_id >= 0)
+ {
+ rp->drag->events_to =
+ ed->table_parts[rp->part->dragable.events_id % ed->table_parts_size];
+ /* events_to may be used only with dragable */
+ if (!rp->drag->events_to->part->dragable.x &&
+ !rp->drag->events_to->part->dragable.y)
+ rp->drag->events_to = NULL;
+ }
}
-
+
rp->swallow_params.min.w = 0;
rp->swallow_params.min.w = 0;
rp->swallow_params.max.w = -1;
rp = ed->table_parts[i];
evas_object_show(rp->object);
if (_edje_block_break(ed)) break;
- if (rp->part->dragable.x < 0) rp->drag.val.x = 1.0;
- if (rp->part->dragable.y < 0) rp->drag.val.x = 1.0;
- _edje_dragable_pos_set(ed, rp, rp->drag.val.x, rp->drag.val.y);
+ if (rp->drag)
+ {
+ if (rp->part->dragable.x < 0) rp->drag->val.x = 1.0;
+ if (rp->part->dragable.y < 0) rp->drag->val.x = 1.0;
+ _edje_dragable_pos_set(ed, rp, rp->drag->val.x, rp->drag->val.y);
+ }
}
ed->dirty = 1;
#ifdef EDJE_CALC_CACHE
Edje_Aspect aspect; // 12
} swallow_params; // 28 // FIXME: only if type SWALLOW
- Edje_Real_Part_Drag drag; // 104 // FIME: make drag pointer to struct optional
+ Edje_Real_Part_Drag *drag; // 4
struct {
Edje_Real_Part *source; // 4
#ifdef EDJE_CALC_CACHE
unsigned char invalidate : 1;
#endif
-}; // 394
-// WITH EDJE_CALC_CACHE: 874
+}; // 294
+// WITH EDJE_CALC_CACHE: 774
struct _Edje_Running_Program
{
if (pt->id >= 0)
{
rp = ed->table_parts[pt->id % ed->table_parts_size];
- if ((rp) && (rp->drag.down.count == 0))
+ if ((rp) && (rp->drag) && (rp->drag->down.count == 0))
{
- rp->drag.val.x = pr->value;
- rp->drag.val.y = pr->value2;
- if (rp->drag.val.x < 0.0) rp->drag.val.x = 0.0;
- else if (rp->drag.val.x > 1.0) rp->drag.val.x = 1.0;
- if (rp->drag.val.y < 0.0) rp->drag.val.y = 0.0;
- else if (rp->drag.val.y > 1.0) rp->drag.val.y = 1.0;
- _edje_dragable_pos_set(ed, rp, rp->drag.val.x, rp->drag.val.y);
+ rp->drag->val.x = pr->value;
+ rp->drag->val.y = pr->value2;
+ if (rp->drag->val.x < 0.0) rp->drag->val.x = 0.0;
+ else if (rp->drag->val.x > 1.0) rp->drag->val.x = 1.0;
+ if (rp->drag->val.y < 0.0) rp->drag->val.y = 0.0;
+ else if (rp->drag->val.y > 1.0) rp->drag->val.y = 1.0;
+ _edje_dragable_pos_set(ed, rp, rp->drag->val.x, rp->drag->val.y);
_edje_emit(ed, "drag,set", rp->part->name);
if (_edje_block_break(ed)) goto break_prog;
}
if (pt->id >= 0)
{
rp = ed->table_parts[pt->id % ed->table_parts_size];
- if ((rp) && (rp->drag.down.count == 0))
+ if ((rp) && (rp->drag) && (rp->drag->down.count == 0))
{
- rp->drag.val.x += pr->value * rp->drag.step.x * rp->part->dragable.x;
- rp->drag.val.y += pr->value2 * rp->drag.step.y * rp->part->dragable.y;
- if (rp->drag.val.x < 0.0) rp->drag.val.x = 0.0;
- else if (rp->drag.val.x > 1.0) rp->drag.val.x = 1.0;
- if (rp->drag.val.y < 0.0) rp->drag.val.y = 0.0;
- else if (rp->drag.val.y > 1.0) rp->drag.val.y = 1.0;
- _edje_dragable_pos_set(ed, rp, rp->drag.val.x, rp->drag.val.y);
+ rp->drag->val.x += pr->value * rp->drag->step.x * rp->part->dragable.x;
+ rp->drag->val.y += pr->value2 * rp->drag->step.y * rp->part->dragable.y;
+ if (rp->drag->val.x < 0.0) rp->drag->val.x = 0.0;
+ else if (rp->drag->val.x > 1.0) rp->drag->val.x = 1.0;
+ if (rp->drag->val.y < 0.0) rp->drag->val.y = 0.0;
+ else if (rp->drag->val.y > 1.0) rp->drag->val.y = 1.0;
+ _edje_dragable_pos_set(ed, rp, rp->drag->val.x, rp->drag->val.y);
_edje_emit(ed, "drag,step", rp->part->name);
if (_edje_block_break(ed)) goto break_prog;
}
if (pt->id >= 0)
{
rp = ed->table_parts[pt->id % ed->table_parts_size];
- if ((rp) && (rp->drag.down.count == 0))
+ if ((rp) && (rp->drag) && (rp->drag->down.count == 0))
{
- rp->drag.val.x += pr->value * rp->drag.page.x * rp->part->dragable.x;
- rp->drag.val.y += pr->value2 * rp->drag.page.y * rp->part->dragable.y;
- if (rp->drag.val.x < 0.0) rp->drag.val.x = 0.0;
- else if (rp->drag.val.x > 1.0) rp->drag.val.x = 1.0;
- if (rp->drag.val.y < 0.0) rp->drag.val.y = 0.0;
- else if (rp->drag.val.y > 1.0) rp->drag.val.y = 1.0;
- _edje_dragable_pos_set(ed, rp, rp->drag.val.x, rp->drag.val.y);
+ rp->drag->val.x += pr->value * rp->drag->page.x * rp->part->dragable.x;
+ rp->drag->val.y += pr->value2 * rp->drag->page.y * rp->part->dragable.y;
+ if (rp->drag->val.x < 0.0) rp->drag->val.x = 0.0;
+ else if (rp->drag->val.x > 1.0) rp->drag->val.x = 1.0;
+ if (rp->drag->val.y < 0.0) rp->drag->val.y = 0.0;
+ else if (rp->drag->val.y > 1.0) rp->drag->val.y = 1.0;
+ _edje_dragable_pos_set(ed, rp, rp->drag->val.x, rp->drag->val.y);
_edje_emit(ed, "drag,page", rp->part->name);
if (_edje_block_break(ed)) goto break_prog;
}
if ((!ed) || (!part)) return;
rp = _edje_real_part_recursive_get(ed, (char *)part);
if (!rp) return;
- if (rp->drag.down.count > 0) return;
+ if (!rp->drag) return;
+ if (rp->drag->down.count > 0) return;
if (rp->part->dragable.confine_id != -1)
{
dx = CLAMP(dx, 0.0, 1.0);
}
if (rp->part->dragable.x < 0) dx = 1.0 - dx;
if (rp->part->dragable.y < 0) dy = 1.0 - dy;
- if ((rp->drag.val.x == dx) && (rp->drag.val.y == dy)) return;
- rp->drag.val.x = dx;
- rp->drag.val.y = dy;
+ if ((rp->drag->val.x == dx) && (rp->drag->val.y == dy)) return;
+ rp->drag->val.x = dx;
+ rp->drag->val.y = dy;
#ifdef EDJE_CALC_CACHE
rp->invalidate = 1;
#endif
_edje_recalc_do(ed);
rp = _edje_real_part_recursive_get(ed, (char *)part);
- if (!rp)
+ if (!rp || !rp->drag)
{
if (dx) *dx = 0;
if (dy) *dy = 0;
return;
}
- ddx = rp->drag.val.x;
- ddy = rp->drag.val.y;
+ ddx = rp->drag->val.x;
+ ddy = rp->drag->val.y;
if (rp->part->dragable.x < 0) ddx = 1.0 - ddx;
if (rp->part->dragable.y < 0) ddy = 1.0 - ddy;
if (dx) *dx = ddx;
if ((!ed) || (!part)) return;
rp = _edje_real_part_recursive_get(ed, (char *)part);
if (!rp) return;
+ if (!rp->drag) return;
if (dw < 0.0) dw = 0.0;
else if (dw > 1.0) dw = 1.0;
if (dh < 0.0) dh = 0.0;
else if (dh > 1.0) dh = 1.0;
- if ((rp->drag.size.x == dw) && (rp->drag.size.y == dh)) return;
- rp->drag.size.x = dw;
- rp->drag.size.y = dh;
+ if ((rp->drag->size.x == dw) && (rp->drag->size.y == dh)) return;
+ rp->drag->size.x = dw;
+ rp->drag->size.y = dh;
rp->edje->dirty = 1;
#ifdef EDJE_CALC_CACHE
rp->invalidate = 1;
_edje_recalc_do(ed);
rp = _edje_real_part_recursive_get(ed, (char *)part);
- if (!rp)
+ if (!rp || !rp->drag)
{
if (dw) *dw = 0;
if (dh) *dh = 0;
return;
}
- if (dw) *dw = rp->drag.size.x;
- if (dh) *dh = rp->drag.size.y;
+ if (dw) *dw = rp->drag->size.x;
+ if (dh) *dh = rp->drag->size.y;
}
/** Sets the drag step increment
if ((!ed) || (!part)) return;
rp = _edje_real_part_recursive_get(ed, (char *)part);
if (!rp) return;
+ if (!rp->drag) return;
if (dx < 0.0) dx = 0.0;
else if (dx > 1.0) dx = 1.0;
if (dy < 0.0) dy = 0.0;
else if (dy > 1.0) dy = 1.0;
- rp->drag.step.x = dx;
- rp->drag.step.y = dy;
+ rp->drag->step.x = dx;
+ rp->drag->step.y = dy;
#ifdef EDJE_CALC_CACHE
rp->invalidate = 1;
#endif
_edje_recalc_do(ed);
rp = _edje_real_part_recursive_get(ed, (char *)part);
- if (!rp)
+ if (!rp || !rp->drag)
{
if (dx) *dx = 0;
if (dy) *dy = 0;
return;
}
- if (dx) *dx = rp->drag.step.x;
- if (dy) *dy = rp->drag.step.y;
+ if (dx) *dx = rp->drag->step.x;
+ if (dy) *dy = rp->drag->step.y;
}
/** Sets the page step increments
if ((!ed) || (!part)) return;
rp = _edje_real_part_recursive_get(ed, (char *)part);
if (!rp) return;
+ if (!rp->drag) return;
if (dx < 0.0) dx = 0.0;
else if (dx > 1.0) dx = 1.0;
if (dy < 0.0) dy = 0.0;
else if (dy > 1.0) dy = 1.0;
- rp->drag.page.x = dx;
- rp->drag.page.y = dy;
+ rp->drag->page.x = dx;
+ rp->drag->page.y = dy;
#ifdef EDJE_CALC_CACHE
rp->invalidate = 1;
#endif
_edje_recalc_do(ed);
rp = _edje_real_part_recursive_get(ed, (char *)part);
- if (!rp)
+ if (!rp || !rp->drag)
{
if (dx) *dx = 0;
if (dy) *dy = 0;
return;
}
- if (dx) *dx = rp->drag.page.x;
- if (dy) *dy = rp->drag.page.y;
+ if (dx) *dx = rp->drag->page.x;
+ if (dy) *dy = rp->drag->page.y;
}
/** Steps the dragable x,y steps
if ((!ed) || (!part)) return;
rp = _edje_real_part_recursive_get(ed, (char *)part);
if (!rp) return;
- if (rp->drag.down.count > 0) return;
- px = rp->drag.val.x;
- py = rp->drag.val.y;
- rp->drag.val.x += dx * rp->drag.step.x * rp->part->dragable.x;
- rp->drag.val.y += dy * rp->drag.step.y * rp->part->dragable.y;
- rp->drag.val.x = CLAMP (rp->drag.val.x, 0.0, 1.0);
- rp->drag.val.y = CLAMP (rp->drag.val.y, 0.0, 1.0);
- if ((px == rp->drag.val.x) && (py == rp->drag.val.y)) return;
+ if (!rp->drag) return;
+ if (rp->drag->down.count > 0) return;
+ px = rp->drag->val.x;
+ py = rp->drag->val.y;
+ rp->drag->val.x += dx * rp->drag->step.x * rp->part->dragable.x;
+ rp->drag->val.y += dy * rp->drag->step.y * rp->part->dragable.y;
+ rp->drag->val.x = CLAMP (rp->drag->val.x, 0.0, 1.0);
+ rp->drag->val.y = CLAMP (rp->drag->val.y, 0.0, 1.0);
+ if ((px == rp->drag->val.x) && (py == rp->drag->val.y)) return;
#ifdef EDJE_CALC_CACHE
rp->invalidate = 1;
#endif
- _edje_dragable_pos_set(rp->edje, rp, rp->drag.val.x, rp->drag.val.y);
+ _edje_dragable_pos_set(rp->edje, rp, rp->drag->val.x, rp->drag->val.y);
_edje_emit(rp->edje, "drag,step", rp->part->name);
}
if ((!ed) || (!part)) return;
rp = _edje_real_part_recursive_get(ed, (char *)part);
if (!rp) return;
- if (rp->drag.down.count > 0) return;
- px = rp->drag.val.x;
- py = rp->drag.val.y;
- rp->drag.val.x += dx * rp->drag.page.x * rp->part->dragable.x;
- rp->drag.val.y += dy * rp->drag.page.y * rp->part->dragable.y;
- rp->drag.val.x = CLAMP (rp->drag.val.x, 0.0, 1.0);
- rp->drag.val.y = CLAMP (rp->drag.val.y, 0.0, 1.0);
- if ((px == rp->drag.val.x) && (py == rp->drag.val.y)) return;
+ if (!rp->drag) return;
+ if (rp->drag->down.count > 0) return;
+ px = rp->drag->val.x;
+ py = rp->drag->val.y;
+ rp->drag->val.x += dx * rp->drag->page.x * rp->part->dragable.x;
+ rp->drag->val.y += dy * rp->drag->page.y * rp->part->dragable.y;
+ rp->drag->val.x = CLAMP (rp->drag->val.x, 0.0, 1.0);
+ rp->drag->val.y = CLAMP (rp->drag->val.y, 0.0, 1.0);
+ if ((px == rp->drag->val.x) && (py == rp->drag->val.y)) return;
#ifdef EDJE_CALC_CACHE
rp->invalidate = 1;
#endif
- _edje_dragable_pos_set(rp->edje, rp, rp->drag.val.x, rp->drag.val.y);
+ _edje_dragable_pos_set(rp->edje, rp, rp->drag->val.x, rp->drag->val.y);
_edje_emit(rp->edje, "drag,page", rp->part->name);
}