From 85cf484e7a1abd57339edd4f18ccbe85cc7c9918 Mon Sep 17 00:00:00 2001 From: Chris Boyle Date: Mon, 9 May 2022 22:22:19 +0100 Subject: [PATCH] Mosaic: ignore taps above/left of the grid Thanks to Larry Hastings for the patch (tweaked to include drag/release). (cherry picked from Android port, commit 377e61b144c518a3d9efba66be08bf00ff6596e8) --- mosaic.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/mosaic.c b/mosaic.c index 39d368a..3e54ba0 100644 --- a/mosaic.c +++ b/mosaic.c @@ -1056,8 +1056,9 @@ static char *interpret_move(const game_state *state, game_ui *ui, const game_drawstate *ds, int x, int y, int button) { - int gameX, gameY, i, srcX = ui->last_x, srcY = - ui->last_y, dirX, dirY, diff; + int srcX = ui->last_x, srcY = ui->last_y; + int offsetX, offsetY, gameX, gameY, i; + int dirX, dirY, diff; char move_type; char move_desc[80]; char *ret = NULL; @@ -1066,8 +1067,13 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (state->not_completed_clues == 0 && !IS_CURSOR_MOVE(button)) { return NULL; } - gameX = (x - (ds->tilesize / 2)) / ds->tilesize; - gameY = (y - (ds->tilesize / 2)) / ds->tilesize; + offsetX = x - (ds->tilesize / 2); + offsetY = y - (ds->tilesize / 2); + gameX = offsetX / ds->tilesize; + gameY = offsetY / ds->tilesize; + if ((IS_MOUSE_DOWN(button) || IS_MOUSE_DRAG(button) || IS_MOUSE_RELEASE(button)) + && ((offsetX < 0) || (offsetY < 0))) + return NULL; if (button == LEFT_BUTTON || button == RIGHT_BUTTON) { cell_state = get_coords(state, state->cells_contents, gameX, gameY);