chiark / gitweb /
Sensitivity: Handle sensitivities < 1.0 without rounding errors
[xf86-input-mtrack.git] / src / gestures.c
index b49ca6ea55198c91d017025d0b332cf15f12b661..5ee61181ff539e2d8b63f72454311b121b84c8e3 100644 (file)
@@ -239,6 +239,8 @@ static void buttons_update(struct Gestures* gs,
                                int zones, left, right;
                                double width;
 
+                               pos -= cfg->pad_xmin;
+
                                zones = 0;
                                if (cfg->button_1touch > 0)
                                        zones++;
@@ -250,8 +252,8 @@ static void buttons_update(struct Gestures* gs,
                                if (zones > 0) {
                                        width = ((double)cfg->pad_width)/((double)zones);
 #ifdef DEBUG_GESTURES
-                                       xf86Msg(X_INFO, "buttons_update: pad width %d, zones %d, zone width %f, x %d\n",
-                                               cfg->pad_width, zones, width, pos);
+                                       xf86Msg(X_INFO, "buttons_update: pad width %d (min %d), zones %d, zone width %f, x %d\n",
+                                               cfg->pad_width, cfg->pad_xmin, zones, width, pos);
 #endif
                                        for (i = 0; i < zones; i++) {
                                                left = width*i;
@@ -412,8 +414,8 @@ static void trigger_move(struct Gestures* gs,
 {
        if ((gs->move_type == GS_MOVE || !timercmp(&gs->time, &gs->move_wait, <)) && (dx != 0 || dy != 0)) {
                if (trigger_drag_start(gs, cfg, dx, dy)) {
-                       gs->move_dx = (int)(dx*cfg->sensitivity);
-                       gs->move_dy = (int)(dy*cfg->sensitivity);
+                       gs->move_dx = (int)(dx*cfg->sensitivity_big);
+                       gs->move_dy = (int)(dy*cfg->sensitivity_big);
                        gs->move_type = GS_MOVE;
                        gs->move_dist = 0;
                        gs->move_dir = TR_NONE;