diff options
| author | Simon Tatham <anakin@pobox.com> | 2004-05-11 18:32:48 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2004-05-11 18:32:48 +0000 |
| commit | eb8a374d0dd263953647067ec26b1fc33661d3f5 (patch) | |
| tree | 4744318ad712037d0d8aa0aa2874badf14c80f73 /rect.c | |
| parent | e5d773604fb5bd14e0814bfea88851313bd56e93 (diff) | |
| download | puzzles-eb8a374d0dd263953647067ec26b1fc33661d3f5.zip puzzles-eb8a374d0dd263953647067ec26b1fc33661d3f5.tar.gz puzzles-eb8a374d0dd263953647067ec26b1fc33661d3f5.tar.bz2 puzzles-eb8a374d0dd263953647067ec26b1fc33661d3f5.tar.xz | |
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.
[originally from svn r4210]
Diffstat (limited to 'rect.c')
| -rw-r--r-- | rect.c | 61 |
1 files changed, 34 insertions, 27 deletions
@@ -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; } /* ---------------------------------------------------------------------- |