From 503bad02fe15c00769063f4c0e7809a6ff477e54 Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Fri, 9 Jun 2006 18:24:37 +0000 Subject: [PATCH] disable mouse support while suspended git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3655 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 6 ++++-- src/nano.c | 39 ++++++++++++++++++++++++++++++++------- src/proto.h | 2 ++ 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index fb0eab9f..8b67a2f8 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 c3d2d91b..fbaa8918 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 ed4ccaba..1bc0f143 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 -- 2.39.5