diff options
author | nia <nia@NetBSD.org> | 2021-07-14 20:17:13 +0200 |
---|---|---|
committer | BenBE <BenBE@geshi.org> | 2021-07-15 19:09:08 +0200 |
commit | 2ab8fb83ba7d210c7c377b5b417f79822a6f7724 (patch) | |
tree | f83599c5be12b94271f16482316e8cfcba8ef9aa | |
parent | d45b4f4a4328ced5e291e6c309437599647c02e0 (diff) |
netbsd: Support curses libraries without ncurses mouse support
This adds a configure check for the ncurses getmouse() function
and disables mouse-related code paths when mouse support is
not present in the curses library.
This is necessary for stable versions of NetBSD's libcurses, the
development version has stub mouse functions for compatibility
with ncurses.
Signed-off-by: Nia Alarie <nia@NetBSD.org>
-rw-r--r-- | CRT.c | 4 | ||||
-rw-r--r-- | InfoScreen.c | 2 | ||||
-rw-r--r-- | ScreenManager.c | 2 | ||||
-rw-r--r-- | configure.ac | 1 |
4 files changed, 9 insertions, 0 deletions
@@ -836,7 +836,9 @@ void CRT_init(const Settings* settings, bool allowUnicode) { nonl(); intrflush(stdscr, false); keypad(stdscr, true); +#ifdef HAVE_GETMOUSE mouseinterval(0); +#endif curs_set(0); if (has_colors()) { @@ -910,11 +912,13 @@ void CRT_init(const Settings* settings, bool allowUnicode) { #endif CRT_treeStrAscii; +#ifdef HAVE_GETMOUSE #if NCURSES_MOUSE_VERSION > 1 mousemask(BUTTON1_RELEASED | BUTTON4_PRESSED | BUTTON5_PRESSED, NULL); #else mousemask(BUTTON1_RELEASED, NULL); #endif +#endif CRT_degreeSign = initDegreeSign(); } diff --git a/InfoScreen.c b/InfoScreen.c index 259ecee3..a62b7c0d 100644 --- a/InfoScreen.c +++ b/InfoScreen.c @@ -106,6 +106,7 @@ void InfoScreen_run(InfoScreen* this) { } } +#ifdef HAVE_GETMOUSE if (ch == KEY_MOUSE) { MEVENT mevent; int ok = getmouse(&mevent); @@ -127,6 +128,7 @@ void InfoScreen_run(InfoScreen* this) { #endif } } +#endif if (this->inc->active) { IncSet_handleKey(this->inc, ch, panel, IncSet_getListItemValue, this->lines); diff --git a/ScreenManager.c b/ScreenManager.c index 8ec60119..c50d1c4a 100644 --- a/ScreenManager.c +++ b/ScreenManager.c @@ -172,6 +172,7 @@ void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey) { ch = getch(); HandlerResult result = IGNORED; +#ifdef HAVE_GETMOUSE if (ch == KEY_MOUSE && this->settings->enableMouse) { ch = ERR; MEVENT mevent; @@ -212,6 +213,7 @@ void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey) { } } } +#endif if (ch == ERR) { if (sortTimeout > 0) sortTimeout--; diff --git a/configure.ac b/configure.ac index bb92816f..be40187a 100644 --- a/configure.ac +++ b/configure.ac @@ -352,6 +352,7 @@ if test "$my_htop_platform" = "solaris"; then AC_DEFINE([ERR], [(-1)], [Predefine ncurses macro.]) fi AC_CHECK_FUNCS( [set_escdelay] ) +AC_CHECK_FUNCS( [getmouse] ) AC_ARG_ENABLE([hwloc], |