diff --git a/src/nano.c b/src/nano.c index 64895412be1a984899b2190058e15d8e8fb478ea..6f8a46d3977769301c31f2ca1c9685d3567ff5b3 100644 --- a/src/nano.c +++ b/src/nano.c @@ -1752,12 +1752,12 @@ int do_mouse(void) #ifndef NANO_TINY if (ISSET(SOFTWRAP)) { - ssize_t i = 0; + ssize_t i = 0, current_row = 0; openfile->current = openfile->edittop; while (openfile->current->next != NULL && i < mouse_y) { - openfile->current_y = i; + current_row = i; i += strlenpt(openfile->current->data) / editwincols + 1; openfile->current = openfile->current->next; } @@ -1765,18 +1765,20 @@ int do_mouse(void) if (i > mouse_y) { openfile->current = openfile->current->prev; openfile->current_x = actual_x(openfile->current->data, - ((mouse_y - openfile->current_y) * editwincols) + mouse_x); + ((mouse_y - current_row) * editwincols) + mouse_x); } else openfile->current_x = actual_x(openfile->current->data, mouse_x); } else #endif /* NANO_TINY */ { + ssize_t current_row = openfile->current_y; + /* Move to where the click occurred. */ - for (; openfile->current_y < mouse_y && openfile->current != - openfile->filebot; openfile->current_y++) + for (; current_row < mouse_y && openfile->current != + openfile->filebot; current_row++) openfile->current = openfile->current->next; - for (; openfile->current_y > mouse_y && openfile->current != - openfile->fileage; openfile->current_y--) + for (; current_row > mouse_y && openfile->current != + openfile->fileage; current_row--) openfile->current = openfile->current->prev; openfile->current_x = actual_x(openfile->current->data,