summaryrefslogtreecommitdiff
path: root/src/gestures-pinch.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gestures-pinch.c')
-rw-r--r--src/gestures-pinch.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/src/gestures-pinch.c b/src/gestures-pinch.c
index d05b06f..45f1cb3 100644
--- a/src/gestures-pinch.c
+++ b/src/gestures-pinch.c
@@ -35,23 +35,16 @@ static const int getype[DIM_TOUCH + 1] = {
35 35
36static const int fm_mask = 0x04; 36static const int fm_mask = 0x04;
37 37
38static void set_props(struct combo_model *s, 38static void set_props(const struct gesture_inserter *gin,
39 struct combo_model *s,
39 const struct move_model *m, 40 const struct move_model *m,
40 const struct touch_frame *frame) 41 const struct touch_frame *frame)
41{ 42{
42 struct grail_coord min, max; 43 s->prop[GRAIL_PROP_PINCH_DR] = gin->scale_r * m->fm[FM_R].action_delta;
43 s->prop[GRAIL_PROP_PINCH_DR] = m->fm[FM_R].action_delta; 44 s->prop[GRAIL_PROP_PINCH_VR] = gin->scale_r * m->fm[FM_R].velocity;
44 s->prop[GRAIL_PROP_PINCH_VR] = m->fm[FM_R].velocity; 45 s->prop[GRAIL_PROP_PINCH_R] = gin->scale_r * m->fm[FM_R].value;
45 s->prop[GRAIL_PROP_PINCH_R] = m->fm[FM_R].value;
46 s->nprop = 3; 46 s->nprop = 3;
47 if (!frame->nactive) 47 s->nprop += gin_add_contact_props(gin, s->prop + s->nprop, frame);
48 return;
49 gru_compute_bbox(&min, &max, frame);
50 s->prop[GRAIL_PROP_PINCH_X1] = min.x;
51 s->prop[GRAIL_PROP_PINCH_Y1] = min.y;
52 s->prop[GRAIL_PROP_PINCH_X2] = max.x;
53 s->prop[GRAIL_PROP_PINCH_Y2] = max.y;
54 s->nprop = 7;
55} 48}
56 49
57int gru_pinch(struct grail *ge, 50int gru_pinch(struct grail *ge,
@@ -80,7 +73,7 @@ int gru_pinch(struct grail *ge,
80 } 73 }
81 if (!(move->active & fm_mask)) 74 if (!(move->active & fm_mask))
82 return 0; 75 return 0;
83 set_props(state, move, frame); 76 set_props(ge->gin, state, move, frame);
84 gru_event(ge, state->gid, move, state->prop, state->nprop); 77 gru_event(ge, state->gid, move, state->prop, state->nprop);
85 return 1; 78 return 1;
86} 79}
@@ -121,7 +114,7 @@ int gru_winpinch(struct grail *ge,
121 } 114 }
122 if (!(move->active & fm_mask)) 115 if (!(move->active & fm_mask))
123 return 0; 116 return 0;
124 set_props(state, move, frame); 117 set_props(ge->gin, state, move, frame);
125 gru_event(ge, state->gid, move, state->prop, state->nprop); 118 gru_event(ge, state->gid, move, state->prop, state->nprop);
126 return 1; 119 return 1;
127} 120}