Age | Commit message (Collapse) | Author |
|
The biggest change here is moving various element classes under
more scope-specific directories, which helps to avoid circular
dependencies and is just cleaner to navigate and expand in the
future.
Otherwise this is a largely uncritical port to ESM module syntax!
There are probably a number of changes and other cleanups that
remain much needed.
Whenever I make changes to tui-lib it's hard to believe it's
already been <INSERT COUNTING NUMBER HERE> years since the
previous time. First commits are from January 2017, and the
code originates a month earlier in KAaRMNoD!
|
|
|
|
...instead of using the old loop system.
|
|
(yes, I know I'm not keeping up with semantic versioning, sorry!)
|
|
|
|
|
|
|
|
This makes the screen be automatically redrawn whenever a label's text
is updated.
|
|
I think this'll take some serious attention before it even works and
saves any performance.
|
|
|
|
|
|
|
|
|
|
This is a very large change and probably breaks most applications not
built to work with it. (Obviously, I'm not really being that responsible
with this sort of thing.) I've tested with mtui and it works fine, but
some elements may need tweaks before being 100% adjusted to the new
scheduled-render system we're using with this commit. Also, any elements
which have custom draw behavior will likely need updating so that they
appropriately schedule renders.
|
|
|
|
|
|
|
|
|
|
|
|
...for mouse events. Contains cursor position, modifier keys pressed,
etc.
|
|
Same as 'screenSizeUpdated'.
|
|
...depending on whether there is enough content that it cannot all be
displayed in the form's space or not.
|
|
Specifically, it now clearly represents how much of the scrollable form
is visible and not visible at the moment. It also will never touch the
top or bottom if it's possible to scroll further in the correspodning
direction.
|
|
|
|
Usually this doesn't happen, but it may occur if the items of the
ListScrollForm are regenerated (to a lesser length) before updating
scrollItems.
|
|
|
|
|
|
|
|
|
|
"Oops"
|
|
TL;DR afterIndex was not being set correctly.
|
|
|
|
This actually drastically improves the performance of mtui when opening
very, very large playlists.
|
|
|
|
This way when a program is exited, the mouse will go back to normal (so
you can scroll the terminal log, etc).
|
|
Reference:
http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking
For some reason this works better with tmux than X10 mouse (and it still
works in ordinary, non-tmux windows).
|
|
Not exactly the most elegant implementation, but it definitely works and
isn't really difficult to code around!
|
|
|
|
TL;DR If you want to take into account the width of text, use
measureColumns instead of just checking the length of the text!
|
|
This way layouts can properly support wide characters.
|
|
|
|
If it makes sense to reuse an attributes array, do that.
|
|
(reverted broken stuff; still a little optimization, i.e. cache
cursorIndex)
|
|
|
|
See code comments for explanation.
|
|
|
|
Before: <top>, <bottom>, <second to bottom>, <third to bottom>...
Now: <top>, <second to top>, <third to top>, <fourth to top>...
|
|
|
|
Like mentioned before, it's not too complicated to make these not
bubble - just some added 'return false's.
I wrapped the whole block in a try-finally so that keepCursorInRange
could always be called at the end without any significant code structure
change, so that means the git diff is a little wonky - best viewed with
the -w (ignore whitespace changes) option.
|
|
|