diff options
| author | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2026-01-05 00:56:11 +0300 |
|---|---|---|
| committer | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2026-01-05 00:56:11 +0300 |
| commit | b697806bfd5a6756bb4b40776c4499577671a167 (patch) | |
| tree | 588b6a3eb3d319c382f786d7e729572464d10053 /src/interface-curses | |
| parent | c825c2fd4441ac29f6775ef5bed4143d03da3c97 (diff) | |
Curses: fixed mouse interactions on PDCurses
* There is yet another PDCurses vs. ncurses incompatibility:
ncurses has a mouse event queue so you must call getmouse() repeatedly
for every KEY_MOUSE, while PDCurses apparently doesn't queue and would
end up in an infinite loop. I.e. the program would hang once
you press any mouse button.
* This forced us to add an PDCurses-specific version of teco_interface_getmouse().
Diffstat (limited to 'src/interface-curses')
| -rw-r--r-- | src/interface-curses/interface.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/interface-curses/interface.c b/src/interface-curses/interface.c index 010515c..0764db3 100644 --- a/src/interface-curses/interface.c +++ b/src/interface-curses/interface.c @@ -1967,6 +1967,20 @@ teco_interface_process_mevent(MEVENT *event, GError **error) return teco_cmdline_keymacro("MOUSE", -1, error); } +#ifdef __PDCURSES__ + +static gboolean +teco_interface_getmouse(GError **error) +{ + MEVENT event; + + /* in contrast to ncurses, there is no separate mouse event queue */ + return getmouse(&event) != OK || + teco_interface_process_mevent(&event, error); +} + +#else /* __PDCURSES__ */ + static gboolean teco_interface_getmouse(GError **error) { @@ -1979,6 +1993,8 @@ teco_interface_getmouse(GError **error) return TRUE; } +#endif /* !__PDCURSES__ */ + #endif /* NCURSES_MOUSE_VERSION >= 2 */ static gint |
