This enables ncurses mouse support, which was broken (it seemed to depend on gpm in an unhealthy way). diff -ur tvision-0.8-orig/lib/system.cc lib/system.cc --- tvision-0.8-orig/lib/system.cc Wed Jul 21 20:44:59 2004 +++ lib/system.cc Wed Jul 21 21:14:29 2004 @@ -709,6 +709,10 @@ * Reads a key from the keyboard. */ #ifdef NCURSES_MOUSE_VERSION +static void msInit(); +static void msClose(); +static void msSuspend(); +static void msResume(); static void msHandle(); #endif @@ -1139,6 +1143,28 @@ */ #ifdef NCURSES_MOUSE_VERSION +static mmask_t orig_mousemask = 0; + +static void msInit() +{ + mmask_t m = mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION, &orig_mousemask); +} + +static void msClose() +{ + mmask_t m = mousemask(orig_mousemask, NULL); +} + +static void msSuspend() +{ + mmask_t m = mousemask(0, NULL); +} + +static void msResume() +{ + mmask_t m = mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION, NULL); +} + static void msHandle() { TEvent event; @@ -1738,6 +1764,10 @@ TScreen::drawMouse(0); #ifdef ENABLE_GPM gpmClose(); +#else +#ifdef NCURSES_MOUSE_VERSION + msClose(); +#endif #endif stopcurses(); #ifdef ENABLE_VCS @@ -1925,6 +1955,10 @@ startcurses(); /* curses stuff */ #ifdef ENABLE_GPM gpmInit(); +#else +#ifdef NCURSES_MOUSE_VERSION + msInit(); +#endif #endif /* catch useful signals */ @@ -1958,6 +1992,10 @@ startcurses(); #ifdef ENABLE_GPM gpmResume(); +#else +#ifdef NCURSES_MOUSE_VERSION + msResume(); +#endif #endif doRepaint++; } @@ -1966,6 +2004,10 @@ { #ifdef ENABLE_GPM gpmSuspend(); +#else +#ifdef NCURSES_MOUSE_VERSION + msSuspend(); +#endif #endif stopcurses(); } @@ -1993,6 +2035,10 @@ */ #ifdef ENABLE_GPM gpmSuspend(); +#else +#ifdef NCURSES_MOUSE_VERSION + msSuspend(); +#endif #endif clear(); /* blank the screen */ refresh(); /* this is necessary */ @@ -2000,6 +2046,10 @@ startcurses(); #ifdef ENABLE_GPM gpmResume(); +#else +#ifdef NCURSES_MOUSE_VERSION + msResume(); +#endif #endif doResize = 0; winsize win;