diff --git a/ChangeLog b/ChangeLog index fb0eab9f2203e2ea330533f445cccdd9c7539ee6..8b67a2f8f1e89be672e8e379edd4469c56d5c9c1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -149,8 +149,10 @@ CVS code - parse_rcfile(), nano.1, nano.texi, and nanorc.sample.in. (Benno Schulenberg, minor tweaks by DLR and Nick Warne) - Make suspension clear the screen and put the cursor on the - last line before displaying anything, as Pico does. Changes - to do_suspend(), do_continue(), and terminal_init(). (DLR) + last line before displaying anything, as Pico does. New + functions disable_mouse_support() and enable_mouse_support(); + changes to do_mouse(), do_suspend(), do_continue(), and + terminal_init(). (DLR) - browser.c: do_browser() - Reference NANO_GOTODIR_(ALT|F)?KEY instead of diff --git a/src/nano.c b/src/nano.c index c3d2d91b99c47d714fe742a3aeec58f39aebf895..fbaa891875067d89bf9edf4941133ac106b07c15 100644 --- a/src/nano.c +++ b/src/nano.c @@ -665,16 +665,29 @@ void window_init(void) } #ifndef DISABLE_MOUSE -/* Initialize mouse support. */ +/* Disable mouse support. */ +void disable_mouse_support(void) +{ + mousemask(0, NULL); +} + +/* Enable mouse support. */ +void enable_mouse_support(void) +{ + mousemask(BUTTON1_RELEASED, NULL); + mouseinterval(50); +} + +/* Initialize mouse support. Enable it if the USE_MOUSE flag is set, + * and disable it otherwise. */ void mouse_init(void) { - if (ISSET(USE_MOUSE)) { - mousemask(BUTTON1_RELEASED, NULL); - mouseinterval(50); - } else - mousemask(0, NULL); + if (ISSET(USE_MOUSE)) + enable_mouse_support(); + else + disable_mouse_support(); } -#endif +#endif /* !DISABLE_MOUSE */ #ifdef HAVE_GETOPT_LONG #define print_opt(shortflag, longflag, desc) print_opt_full(shortflag, longflag, desc) @@ -993,6 +1006,11 @@ RETSIGTYPE handle_hupterm(int signal) /* Handler for SIGTSTP (suspend). */ RETSIGTYPE do_suspend(int signal) { +#ifndef DISABLE_MOUSE + /* Turn mouse support off. */ + disable_mouse_support(); +#endif + /* Blank the screen, and move the cursor to the last line of it. */ erase(); move(LINES - 1, 0); @@ -1018,6 +1036,12 @@ RETSIGTYPE do_suspend(int signal) /* Handler for SIGCONT (continue after suspend). */ RETSIGTYPE do_continue(int signal) { +#ifndef DISABLE_MOUSE + /* Turn mouse support back on if it was on before. */ + if (ISSET(USE_MOUSE)) + enable_mouse_support(); +#endif + #ifndef NANO_TINY /* Perhaps the user resized the window while we slept. Handle it, * and restore the terminal to its previous state and update the @@ -2107,6 +2131,7 @@ int main(int argc, char **argv) shortcut_init(FALSE); #ifndef DISABLE_MOUSE + /* Initialize mouse support. */ mouse_init(); #endif diff --git a/src/proto.h b/src/proto.h index ed4ccaba88479c68983bfe5e726f97cb62f9fddf..1bc0f1432462d6fb6675726ccf562f1d0aad3032 100644 --- a/src/proto.h +++ b/src/proto.h @@ -429,6 +429,8 @@ void die(const char *msg, ...); void die_save_file(const char *die_filename); void window_init(void); #ifndef DISABLE_MOUSE +void disable_mouse_support(void); +void enable_mouse_support(void); void mouse_init(void); #endif void print_opt_full(const char *shortflag