From 934797c7842db7db83f8a241722d798ef589cd25 Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 11 May 2004 18:32:48 +0000 Subject: [PATCH] We should turn off the dragging variables in the UI _whenever_ `enddrag' is TRUE, not just when the end of the drag was within a sensible range. git-svn-id: svn://svn.tartarus.org/sgt/puzzles@4210 cda61777-01e9-0310-a592-d414129be87e --- rect.c | 61 ++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/rect.c b/rect.c index b6e71d2..c145e9b 100644 --- a/rect.c +++ b/rect.c @@ -1009,38 +1009,45 @@ game_state *make_move(game_state *from, game_ui *ui, int x, int y, int button) active = TRUE; } - if (enddrag && (xc >= 0 && xc <= 2*from->w && - yc >= 0 && yc <= 2*from->h)) { - ret = dup_game(from); - - if (ui->dragged) { - ui_draw_rect(ret, ui, ret->hedge, ret->vedge, 1); - } else { - if ((xc & 1) && !(yc & 1) && HRANGE(from,xc/2,yc/2)) { - hedge(ret,xc/2,yc/2) = !hedge(ret,xc/2,yc/2); - } - if ((yc & 1) && !(xc & 1) && VRANGE(from,xc/2,yc/2)) { - vedge(ret,xc/2,yc/2) = !vedge(ret,xc/2,yc/2); - } - } + ret = NULL; + + if (enddrag) { + if (xc >= 0 && xc <= 2*from->w && + yc >= 0 && yc <= 2*from->h) { + ret = dup_game(from); + + if (ui->dragged) { + ui_draw_rect(ret, ui, ret->hedge, ret->vedge, 1); + } else { + if ((xc & 1) && !(yc & 1) && HRANGE(from,xc/2,yc/2)) { + hedge(ret,xc/2,yc/2) = !hedge(ret,xc/2,yc/2); + } + if ((yc & 1) && !(xc & 1) && VRANGE(from,xc/2,yc/2)) { + vedge(ret,xc/2,yc/2) = !vedge(ret,xc/2,yc/2); + } + } - ui->drag_start_x = -1; - ui->drag_start_y = -1; - ui->drag_end_x = -1; - ui->drag_end_y = -1; - ui->dragged = FALSE; - active = TRUE; + if (!memcmp(ret->hedge, from->hedge, from->w*from->h) && + !memcmp(ret->vedge, from->vedge, from->w*from->h)) { + free_game(ret); + ret = NULL; + } + } - if (!memcmp(ret->hedge, from->hedge, from->w*from->h) && - !memcmp(ret->vedge, from->vedge, from->w*from->h)) { - free_game(ret); - } else - return ret; /* a move has been made */ + ui->drag_start_x = -1; + ui->drag_start_y = -1; + ui->drag_end_x = -1; + ui->drag_end_y = -1; + ui->dragged = FALSE; + active = TRUE; } - if (active) + if (ret) + return ret; /* a move has been made */ + else if (active) return from; /* UI activity has occurred */ - return NULL; + else + return NULL; } /* ---------------------------------------------------------------------- -- 2.11.0