From: Jonas Kölker Date: Tue, 22 Sep 2015 09:37:17 +0000 (+0200) Subject: Change Pearl's cursor logic. X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=sgt-puzzles.git;a=commitdiff_plain;h=bf8ff09a84c129f0e3e66e18df61912871d4b6e3 Change Pearl's cursor logic. Keyboard dragging while holding Control now moves the cursor to the target square. Shift-Control-arrowkey performs the previous behavior of Control-arrowkey. --- diff --git a/pearl.c b/pearl.c index ff12964..43afcd6 100644 --- a/pearl.c +++ b/pearl.c @@ -2024,10 +2024,14 @@ static char *interpret_move(const game_state *state, game_ui *ui, if (!ui->cursor_active) { ui->cursor_active = TRUE; } else if (control | shift) { + char *move; if (ui->ndragcoords > 0) return NULL; ui->ndragcoords = -1; - return mark_in_direction(state, ui->curx, ui->cury, + move = mark_in_direction(state, ui->curx, ui->cury, KEY_DIRECTION(button), control, tmpbuf); + if (control && !shift && *move) + move_cursor(button, &ui->curx, &ui->cury, w, h, FALSE); + return move; } else { move_cursor(button, &ui->curx, &ui->cury, w, h, FALSE); if (ui->ndragcoords >= 0) diff --git a/puzzles.but b/puzzles.but index 65782af..4ab0d0b 100644 --- a/puzzles.but +++ b/puzzles.but @@ -2990,9 +2990,11 @@ turns, you might mark the one way it \e{can't} go with a cross.) Alternatively, use the cursor keys to move the cursor. Use the Enter key to begin and end keyboard `drag' operations. Use the Space key to -cancel the drag. Use Ctrl-arrowkey and Shift-arrowkey to simulate a -left or right click, respectively, on the edge in the given direction -relative to the cursor, i.e. to draw a segment or a cross. +cancel the drag. Or, hold Control while dragging with the cursor keys +to toggle segments as you move between squares. + +Pressing Control-Shift-arrowkey or Shift-arrowkey simulates a left or +right click, respectively, on the edge in the direction of the key. (All the actions described in \k{common-actions} are also available.)