Maxime Coste
c031a276d5
Fix recently introduced ncurses redraw artifact
2019-11-18 21:17:22 +11:00
Maxime Coste
d3c3e59bbf
Fix search menu trimmed entry display
2019-11-17 22:53:27 +11:00
Maxime Coste
e33ba455c8
Re-merge clear_to_eol in draw
2019-11-13 22:17:08 +11:00
Jason Felice
9692e491ac
Fix bad comparison when parsing OSI sequences
2019-11-09 12:53:45 -05:00
Maxime Coste
8e63aa1548
Check that stdout is a tty in ncurses ui
2019-11-09 08:19:45 +11:00
Maxime Coste
294a5b72e6
Fix some ncurses rendering issues
2019-11-05 17:36:21 +11:00
Maxime Coste
6f3124d678
Split clearing to end of line out of NCursesUI::Window::draw
...
Explicitely clear instead of relying on a brittle heuristic.
2019-11-05 08:04:58 +11:00
Maxime Coste
3a36a2486e
Slight cleanup of the menu display code
2019-10-16 20:45:53 +11:00
Maxime Coste
a2993ea104
Check that stdin is readable before calling read
...
This should not be necessary, but it works around a bug in WSL.
Fixes #3112
2019-10-08 18:38:05 +11:00
Maxime Coste
aa6a7e544d
Fix some clang warnings
2019-09-26 20:22:27 +10:00
Maxime Coste
1d9a9bc308
Remove unneeded NCursesUI::Window::mark_dirty and redraws
...
A bug in client.cc was always forcing full redraws of the windows,
leading to much more terminal output traffic than necessary.
2019-09-26 20:14:08 +10:00
Maxime Coste
7f141e83ce
Additional NCursesUI code cleanups
2019-09-25 22:46:39 +10:00
Maxime Coste
2eccbbbe6f
Avoid unnecessary allocations in NCursesUI::Window::draw calls
...
Pass an ArrayView<DisplayAtom> instead of a DisplayLine& so that
the newly common case of passing a single atom does not require
constructing a Vector.
2019-09-25 22:46:39 +10:00
Maxime Coste
f855deaf8b
Refactor NCursesUI::Window to reduce the exposed methods
...
This should make an alternate implementation simpler as less state
has to be tracked.
2019-09-25 22:46:39 +10:00
Maxime Coste
9c2d2ad694
Do not set O_NONBLOCK on stdin
...
It is not necessary, and impacts also writing to stdout, leading
to broken display on old ncurses versions.
Fixes #3087
2019-09-25 20:33:01 +10:00
Maxime Coste
de3ff78b22
Restore stdin status flags on suspend and quit
...
Those flags are shared with the parent process, so the non-block
flag added impacts their execution.
2019-09-24 23:28:11 +10:00
Maxime Coste
df6d0355d6
Add support for parsing SS3 key sequences
...
As discussed on #3087 , fixes part of that issue.
2019-09-22 09:16:47 +10:00
Maxime Coste
c787128a7c
Restore palette before suspend
2019-09-16 21:57:53 +10:00
Maxime Coste
bfc07b53a2
Correctly restore terminal state on suspend
2019-09-16 07:38:24 +10:00
Maxime Coste
afd5006e8b
Small style tweak
2019-09-16 07:38:24 +10:00
Maxime Coste
9235238191
Fix input coming in packets characters being dropped
2019-09-16 07:38:24 +10:00
Maxime Coste
006083c6f8
Fix multi-client server suspend
2019-09-16 07:38:24 +10:00
Maxime Coste
f43ac3d78b
Fix broken input after suspend
2019-09-16 07:38:24 +10:00
Maxime Coste
e52b93b31a
Setup terminal raw mode without going through ncurses
2019-09-16 07:38:24 +10:00
Maxime Coste
f2f99580f8
Get rid of ncurses based input parsing in favor of custom code
2019-09-16 07:38:24 +10:00
Maxime Coste
a440869573
Fix modifiers support with mouse events
2019-09-07 22:49:30 +10:00
Maxime Coste
04b5d44b3c
Rework custom CSI parsing code and add support for SGR (1006) mouse
...
This will support parsing mouse coordinates bigger than 255 - 32.
And get correct release support.
2019-09-07 22:29:05 +10:00
Maxime Coste
4cc187a54f
Remove unneeded uses of NCurses WINDOW*
...
intrflush and meta have a WINDOW* parameter that is documented as
always ignored.
2019-09-05 00:25:27 +10:00
Maxime Coste
afd45c6755
Extract most ncurses calls into NCursesUI::Window methods
...
Try to isolate ncurses as much as possible to explore alternate
terminal UI implementation.
2019-09-05 00:25:27 +10:00
Frank LENORMAND
cb2647878b
src: Send the stop signal to the entire process group
...
Whenever a tool spawns the editor (e.g. Git), suspending it with ^Z is not
enough to be sent back to the calling shell - another ^Z is necessary.
Fixes #3061
2019-08-21 10:32:35 +02:00
Maxime Coste
2359df0f17
Make scrolling speed configurable
...
The UI now can send a 'Scroll' key, whose value is the scrolling
amount encoded as a signed integer. This replaces the MouseWheelUp
and MouseWheelDown keys.
The NCursesUI now has a ncurses_wheel_scroll_amount ui_option that
controls that amount, it can be negative to swap scrolling direction.
Fixes #3045
2019-08-19 22:16:39 +10:00
Joachim Henke
556d58a073
allow for mapping the Insert key
2019-07-07 18:38:46 +02:00
Maxime Coste
a8ea599372
Remove another unnecessary ; in palete reset escape sequence
...
Should fix #2779 for real.
2019-03-16 11:57:31 +11:00
Maxime Coste
47be98f1fc
Remove unnecessary ; from palette reset escape sequence
...
Fixes #2779
2019-03-13 07:19:20 +11:00
Justin Frank
8178400f8d
Fixed all reorder warnings
2019-02-27 22:45:31 -08:00
Frank LENORMAND
b1f5639d8c
src: Add support for right click events
...
The current implementation treats left mouse button clicks as a
generic "mouse press" modifier, this commit extends the list of
modifiers by adding a "right mouse click" one.
The proper way to implement this would be to ship the coordinates
of mouse key press events in each `Key` object, and pass whichever
button was clicked as a codepoint value (instead of coordinates
currently), but this would require more work.
This commit allows:
* right clicks to set the cursor of the main selection
* control-right clicks to merge all the selections, and then set
its cursor
Fixes #843
2018-12-20 14:32:18 +03:00
Maxime Coste
f7ab129e53
Remove support for 8-bit CSI as it breaks utf8 input
...
Fixes #2630
2018-12-12 19:10:28 +11:00
Maxime Coste
c6f98f8483
Fix compilation error
2018-12-09 22:05:32 +11:00
Maxime Coste
64f1c31401
Refactor parsing of keys and introduce a builtin key parser mode
...
By setting the ncurses_builtin_key_parser ui_option to true, we
can disable ncurses parsing of key strokes to get less portable
parsing but support for more complex modifiers.
2018-12-09 21:35:22 +11:00
Maxime Coste
1670a7514a
NCursesUI: Handle CSI in 8-bit mode as well
2018-12-09 11:20:03 +11:00
Jay McCarthy
dde81019a2
Fix dumb typo
2018-12-07 16:33:35 -05:00
Jay McCarthy
f36a2870b8
Simplify re: lenormf
2018-12-07 16:33:35 -05:00
Jay McCarthy
4cac29d98c
Update re lenormf's comments
2018-12-07 16:33:35 -05:00
Jay McCarthy
af5d2d9523
Parse xterm-keys for motion directly
...
Ideally, something better should be done (re #2554 ) but this is a decent
intermediate step for some useful keys.
Note: NCurses supports parsing these keys when shifted (KEY_SR,
_SLEFT, S_RIGHT, etc), but it does not do the same thing for the other
modifiers.
2018-12-07 16:33:35 -05:00
Justin Frank
c5a1225638
removed option and horizontal layout
2018-10-15 14:07:39 -07:00
Justin Frank
a1e3fa02e6
added option for vertical menu layout in the ncurses ui
2018-10-15 14:07:39 -07:00
Maxime Coste
3b77398c5b
Add an assert to catch newpad returning a nullptr
2018-07-31 13:15:39 +01:00
Maxime Coste
b6933a2bdb
Fix infinite loop on SIGHUP with the NCursesUI
...
Fixes #2126
2018-07-08 15:54:01 +10:00
Maxime Coste
3d4ee7d201
Tweak search style menu completion display
2018-06-20 20:20:11 +10:00
Maxime Coste
b82d31016b
Do not draw menu if it would hide prompt content
2018-06-20 08:12:53 +10:00