~mdw
/
sgt
/
puzzles
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Arrgh! Revert r9395,r9396,r9397,r9398, all of which I just committed
[sgt/puzzles]
/
rect.c
diff --git
a/rect.c
b/rect.c
index
82256f7
..
72a00e1
100644
(file)
--- a/
rect.c
+++ b/
rect.c
@@
-2377,13
+2377,31
@@
static char *interpret_move(game_state *from, game_ui *ui, game_drawstate *ds,
coord_round(FROMCOORD((float)x), FROMCOORD((float)y), &xc, &yc);
if (button == LEFT_BUTTON || button == RIGHT_BUTTON) {
coord_round(FROMCOORD((float)x), FROMCOORD((float)y), &xc, &yc);
if (button == LEFT_BUTTON || button == RIGHT_BUTTON) {
+ if (ui->drag_start_x >= 0 && ui->cur_dragging) {
+ /*
+ * If a keyboard drag is in progress, unceremoniously
+ * cancel it.
+ */
+ ui->drag_start_x = -1;
+ ui->drag_start_y = -1;
+ ui->drag_end_x = -1;
+ ui->drag_end_y = -1;
+ ui->x1 = -1;
+ ui->y1 = -1;
+ ui->x2 = -1;
+ ui->y2 = -1;
+ ui->dragged = FALSE;
+ }
startdrag = TRUE;
ui->cur_visible = ui->cur_dragging = FALSE;
active = TRUE;
erasing = (button == RIGHT_BUTTON);
} else if (button == LEFT_RELEASE || button == RIGHT_RELEASE) {
/* We assert we should have had a LEFT_BUTTON first. */
startdrag = TRUE;
ui->cur_visible = ui->cur_dragging = FALSE;
active = TRUE;
erasing = (button == RIGHT_BUTTON);
} else if (button == LEFT_RELEASE || button == RIGHT_RELEASE) {
/* We assert we should have had a LEFT_BUTTON first. */
- assert(!ui->cur_visible);
+ if (ui->cur_visible) {
+ ui->cur_visible = FALSE;
+ active = TRUE;
+ }
assert(!ui->cur_dragging);
enddrag = TRUE;
erasing = (button == RIGHT_RELEASE);
assert(!ui->cur_dragging);
enddrag = TRUE;
erasing = (button == RIGHT_RELEASE);
@@
-2394,6
+2412,13
@@
static char *interpret_move(game_state *from, game_ui *ui, game_drawstate *ds,
if (!ui->cur_dragging) return "";
coord_round((float)ui->cur_x + 0.5F, (float)ui->cur_y + 0.5F, &xc, &yc);
} else if (IS_CURSOR_SELECT(button)) {
if (!ui->cur_dragging) return "";
coord_round((float)ui->cur_x + 0.5F, (float)ui->cur_y + 0.5F, &xc, &yc);
} else if (IS_CURSOR_SELECT(button)) {
+ if (ui->drag_start_x >= 0 && !ui->cur_dragging) {
+ /*
+ * If a mouse drag is in progress, ignore attempts to
+ * start a keyboard one.
+ */
+ return NULL;
+ }
if (!ui->cur_visible) {
assert(!ui->cur_dragging);
ui->cur_visible = TRUE;
if (!ui->cur_visible) {
assert(!ui->cur_dragging);
ui->cur_visible = TRUE;
@@
-2855,6
+2880,11
@@
static float game_flash_length(game_state *oldstate,
return 0.0F;
}
return 0.0F;
}
+static int game_status(game_state *state)
+{
+ return state->completed ? +1 : 0;
+}
+
static int game_timing_state(game_state *state, game_ui *ui)
{
return TRUE;
static int game_timing_state(game_state *state, game_ui *ui)
{
return TRUE;
@@
-2960,6
+2990,7
@@
const struct game thegame = {
game_redraw,
game_anim_length,
game_flash_length,
game_redraw,
game_anim_length,
game_flash_length,
+ game_status,
TRUE, FALSE, game_print_size, game_print,
TRUE, /* wants_statusbar */
FALSE, game_timing_state,
TRUE, FALSE, game_print_size, game_print,
TRUE, /* wants_statusbar */
FALSE, game_timing_state,