aboutsummaryrefslogtreecommitdiff
path: root/tents.c
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2009-12-17 18:16:42 +0000
committerSimon Tatham <anakin@pobox.com>2009-12-17 18:16:42 +0000
commit97477f0916bd6aa9a746310e9566158d389b82d5 (patch)
tree072881ea5fde930154ce2f750c35146df8284265 /tents.c
parent6d5245d8bfb44f4d2ecddab0507fcf00876b86e3 (diff)
downloadpuzzles-97477f0916bd6aa9a746310e9566158d389b82d5.zip
puzzles-97477f0916bd6aa9a746310e9566158d389b82d5.tar.gz
puzzles-97477f0916bd6aa9a746310e9566158d389b82d5.tar.bz2
puzzles-97477f0916bd6aa9a746310e9566158d389b82d5.tar.xz
Patches from Frode Austvik to modify the effects of the mouse
buttons in several games if STYLUS_BASED is defined: in games where you can set a puzzle element to 'on', 'off' or 'not yet set', when it's hard to mimic a second mouse button, it's better to have the one 'button' cycle between all three states rather than from 'on' back to 'unset'. [originally from svn r8784]
Diffstat (limited to 'tents.c')
-rw-r--r--tents.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/tents.c b/tents.c
index 2c8b042..a229e55 100644
--- a/tents.c
+++ b/tents.c
@@ -1469,6 +1469,7 @@ static int drag_xform(game_ui *ui, int x, int y, int v)
ymin = min(ui->dsy, ui->dey);
ymax = max(ui->dsy, ui->dey);
+#ifndef STYLUS_BASED
/*
* Left-dragging has no effect, so we treat a left-drag as a
* single click on dsx,dsy.
@@ -1477,6 +1478,7 @@ static int drag_xform(game_ui *ui, int x, int y, int v)
xmin = xmax = ui->dsx;
ymin = ymax = ui->dsy;
}
+#endif
if (x < xmin || x > xmax || y < ymin || y > ymax)
return v; /* no change outside drag area */
@@ -1489,11 +1491,18 @@ static int drag_xform(game_ui *ui, int x, int y, int v)
* Results of a simple click. Left button sets blanks to
* tents; right button sets blanks to non-tents; either
* button clears a non-blank square.
+ * If stylus-based however, it loops instead.
*/
if (ui->drag_button == LEFT_BUTTON)
+#ifdef STYLUS_BASED
+ v = (v == BLANK ? TENT : (v == TENT ? NONTENT : BLANK));
+ else
+ v = (v == BLANK ? NONTENT : (v == NONTENT ? TENT : BLANK));
+#else
v = (v == BLANK ? TENT : BLANK);
else
v = (v == BLANK ? NONTENT : BLANK);
+#endif
} else {
/*
* Results of a drag. Left-dragging has no effect.
@@ -1503,7 +1512,11 @@ static int drag_xform(game_ui *ui, int x, int y, int v)
if (ui->drag_button == RIGHT_BUTTON)
v = (v == BLANK ? NONTENT : v);
else
+#ifdef STYLUS_BASED
+ v = (v == BLANK ? NONTENT : v);
+#else
/* do nothing */;
+#endif
}
return v;