further simplify processing of mouse events by consolidating if clauses
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4113 35c25a1d-7b9e-4130-9fde-d3aeb78583b8master
parent
3a504709b7
commit
ebc38fd106
|
@ -1,3 +1,9 @@
|
||||||
|
2007-06-28 David Lawrence Ramsey <pooka109@gmail.com>
|
||||||
|
|
||||||
|
* browser.c (do_browser), nano.c (do_mouse), prompt.c
|
||||||
|
(do_statusbar_mouse, do_yesno_prompt): Further simplify
|
||||||
|
processing of mouse events by consolidating if clauses.
|
||||||
|
|
||||||
2007-05-29 David Lawrence Ramsey <pooka109@gmail.com>
|
2007-05-29 David Lawrence Ramsey <pooka109@gmail.com>
|
||||||
|
|
||||||
* winio.c (do_mouseinput): Deal with clicks of the first mouse
|
* winio.c (do_mouseinput): Deal with clicks of the first mouse
|
||||||
|
|
|
@ -131,36 +131,32 @@ char *do_browser(char *path, DIR *dir)
|
||||||
{
|
{
|
||||||
int mouse_x, mouse_y;
|
int mouse_x, mouse_y;
|
||||||
|
|
||||||
if (get_mouseinput(&mouse_x, &mouse_y, TRUE) == 0) {
|
/* We can click on the edit window to select a
|
||||||
/* We can click in the edit window to select a
|
* filename. */
|
||||||
* filename. */
|
if (get_mouseinput(&mouse_x, &mouse_y, TRUE) == 0 &&
|
||||||
if (wmouse_trafo(edit, &mouse_y, &mouse_x,
|
wmouse_trafo(edit, &mouse_y, &mouse_x, FALSE)) {
|
||||||
FALSE)) {
|
/* longest is the width of each column. There
|
||||||
/* longest is the width of each column.
|
* are two spaces between each column. */
|
||||||
* There are two spaces between each
|
selected = (fileline / editwinrows) *
|
||||||
* column. */
|
|
||||||
selected = (fileline / editwinrows) *
|
|
||||||
(editwinrows * width) + (mouse_y *
|
(editwinrows * width) + (mouse_y *
|
||||||
width) + (mouse_x / (longest + 2));
|
width) + (mouse_x / (longest + 2));
|
||||||
|
|
||||||
/* If they clicked beyond the end of a row,
|
/* If they clicked beyond the end of a row,
|
||||||
* select the filename at the end of that
|
* select the filename at the end of that
|
||||||
* row. */
|
* row. */
|
||||||
if (mouse_x > width * (longest + 2))
|
if (mouse_x > width * (longest + 2))
|
||||||
selected--;
|
selected--;
|
||||||
|
|
||||||
/* If we're off the screen, select the last
|
/* If we're off the screen, select the last
|
||||||
* filename. */
|
* filename. */
|
||||||
if (selected > filelist_len - 1)
|
if (selected > filelist_len - 1)
|
||||||
selected = filelist_len - 1;
|
selected = filelist_len - 1;
|
||||||
|
|
||||||
/* If we selected the same filename as last
|
/* If we selected the same filename as last
|
||||||
* time, put back the Enter key so that it's
|
* time, put back the Enter key so that it's
|
||||||
* read in. */
|
* read in. */
|
||||||
if (old_selected == selected)
|
if (old_selected == selected)
|
||||||
unget_kbinput(NANO_ENTER_KEY, FALSE,
|
unget_kbinput(NANO_ENTER_KEY, FALSE, FALSE);
|
||||||
FALSE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
52
src/nano.c
52
src/nano.c
|
@ -1497,42 +1497,38 @@ int do_mouse(void)
|
||||||
int mouse_x, mouse_y;
|
int mouse_x, mouse_y;
|
||||||
int retval = get_mouseinput(&mouse_x, &mouse_y, TRUE);
|
int retval = get_mouseinput(&mouse_x, &mouse_y, TRUE);
|
||||||
|
|
||||||
if (retval == 0) {
|
/* We can click on the edit window to move the cursor. */
|
||||||
/* We can click in the edit window to move the cursor. */
|
if (retval == 0 && wmouse_trafo(edit, &mouse_y, &mouse_x, FALSE)) {
|
||||||
if (wmouse_trafo(edit, &mouse_y, &mouse_x, FALSE)) {
|
bool sameline;
|
||||||
bool sameline;
|
/* Did they click on the line with the cursor? If they
|
||||||
/* Did they click on the line with the cursor? If they
|
* clicked on the cursor, we set the mark. */
|
||||||
* clicked on the cursor, we set the mark. */
|
const filestruct *current_save = openfile->current;
|
||||||
const filestruct *current_save = openfile->current;
|
size_t current_x_save = openfile->current_x;
|
||||||
size_t current_x_save = openfile->current_x;
|
size_t pww_save = openfile->placewewant;
|
||||||
size_t pww_save = openfile->placewewant;
|
|
||||||
|
|
||||||
sameline = (mouse_y == openfile->current_y);
|
sameline = (mouse_y == openfile->current_y);
|
||||||
|
|
||||||
/* Move to where the click occurred. */
|
/* Move to where the click occurred. */
|
||||||
for (; openfile->current_y < mouse_y &&
|
for (; openfile->current_y < mouse_y && openfile->current !=
|
||||||
openfile->current != openfile->filebot;
|
openfile->filebot; openfile->current_y++)
|
||||||
openfile->current_y++)
|
openfile->current = openfile->current->next;
|
||||||
openfile->current = openfile->current->next;
|
for (; openfile->current_y > mouse_y && openfile->current !=
|
||||||
for (; openfile->current_y > mouse_y &&
|
openfile->fileage; openfile->current_y--)
|
||||||
openfile->current != openfile->fileage;
|
openfile->current = openfile->current->prev;
|
||||||
openfile->current_y--)
|
|
||||||
openfile->current = openfile->current->prev;
|
|
||||||
|
|
||||||
openfile->current_x = actual_x(openfile->current->data,
|
openfile->current_x = actual_x(openfile->current->data,
|
||||||
get_page_start(xplustabs()) + mouse_x);
|
get_page_start(xplustabs()) + mouse_x);
|
||||||
openfile->placewewant = xplustabs();
|
openfile->placewewant = xplustabs();
|
||||||
|
|
||||||
#ifndef NANO_TINY
|
#ifndef NANO_TINY
|
||||||
/* Clicking where the cursor is toggles the mark, as does
|
/* Clicking where the cursor is toggles the mark, as does
|
||||||
* clicking beyond the line length with the cursor at the
|
* clicking beyond the line length with the cursor at the end of
|
||||||
* end of the line. */
|
* the line. */
|
||||||
if (sameline && openfile->current_x == current_x_save)
|
if (sameline && openfile->current_x == current_x_save)
|
||||||
do_mark();
|
do_mark();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
edit_redraw(current_save, pww_save);
|
edit_redraw(current_save, pww_save);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
|
|
34
src/prompt.c
34
src/prompt.c
|
@ -278,29 +278,27 @@ int do_statusbar_mouse(void)
|
||||||
int mouse_x, mouse_y;
|
int mouse_x, mouse_y;
|
||||||
int retval = get_mouseinput(&mouse_x, &mouse_y, TRUE);
|
int retval = get_mouseinput(&mouse_x, &mouse_y, TRUE);
|
||||||
|
|
||||||
if (retval == 0) {
|
/* We can click on the statusbar window text to move the cursor. */
|
||||||
/* We can click in the statusbar window text to move the
|
if (retval == 0 && wmouse_trafo(bottomwin, &mouse_y, &mouse_x,
|
||||||
* cursor. */
|
FALSE)) {
|
||||||
if (wmouse_trafo(bottomwin, &mouse_y, &mouse_x, FALSE)) {
|
size_t start_col;
|
||||||
size_t start_col;
|
|
||||||
|
|
||||||
assert(prompt != NULL);
|
assert(prompt != NULL);
|
||||||
|
|
||||||
start_col = strlenpt(prompt) + 1;
|
start_col = strlenpt(prompt) + 1;
|
||||||
|
|
||||||
/* Move to where the click occurred. */
|
/* Move to where the click occurred. */
|
||||||
if (mouse_x > start_col && mouse_y == 0) {
|
if (mouse_x > start_col && mouse_y == 0) {
|
||||||
size_t pww_save = statusbar_pww;
|
size_t pww_save = statusbar_pww;
|
||||||
|
|
||||||
statusbar_x = actual_x(answer,
|
statusbar_x = actual_x(answer,
|
||||||
get_statusbar_page_start(start_col, start_col +
|
get_statusbar_page_start(start_col, start_col +
|
||||||
statusbar_xplustabs()) + mouse_x - start_col -
|
statusbar_xplustabs()) + mouse_x -
|
||||||
1);
|
start_col - 1);
|
||||||
statusbar_pww = statusbar_xplustabs();
|
statusbar_pww = statusbar_xplustabs();
|
||||||
|
|
||||||
if (need_statusbar_horizontal_update(pww_save))
|
if (need_statusbar_horizontal_update(pww_save))
|
||||||
update_statusbar_line(answer, statusbar_x);
|
update_statusbar_line(answer, statusbar_x);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1334,6 +1332,8 @@ int do_yesno_prompt(bool all, const char *msg)
|
||||||
break;
|
break;
|
||||||
#ifndef DISABLE_MOUSE
|
#ifndef DISABLE_MOUSE
|
||||||
case KEY_MOUSE:
|
case KEY_MOUSE:
|
||||||
|
/* We can click on the shortcut list to select an
|
||||||
|
* answer. */
|
||||||
if (get_mouseinput(&mouse_x, &mouse_y, FALSE) == 0 &&
|
if (get_mouseinput(&mouse_x, &mouse_y, FALSE) == 0 &&
|
||||||
wmouse_trafo(bottomwin, &mouse_y, &mouse_x,
|
wmouse_trafo(bottomwin, &mouse_y, &mouse_x,
|
||||||
FALSE) && !ISSET(NO_HELP) && mouse_x <
|
FALSE) && !ISSET(NO_HELP) && mouse_x <
|
||||||
|
|
Loading…
Reference in New Issue