When mouse events are enabled, it is not possible to select text in the
terminal and copy it somewhere else. This could be usefull for some
applications if they don't need to handle mouse events.
Add a function on the ScreenInteractive class to disable grabbing of
mouse events so that it is e.g. possible to select text in the user
interface. The function needs to be called on the screen object before
starting the application loop if such a behaviour is desired.
This yields a ~1% performance improvements, likely
because the smaller types causes less load on memory
when bisearching the WordBreakProperty interval table
Co-authored-by: ArthurSonzogni <sonzogniarthur@gmail.com>
IsCombining() is a hotpath when rendering the screen.
Most of the time is spent doing bisearch on the word break interval list
to check it characters has the extend property.
Create a seperate table for intervals with the extend property,
so they can just be searched in isCombining().
Also some of the intervals in the word break interval list
were consecutive and could be combined to reduce the
size of the list.
This gives a ~25% performance improvement when running the benchmark
Into ftxui/component/, add:
```
Container::Stacked(...)
Window(...);
```
Together, they can be used to display draggable/resizable windows.
Bug:https://github.com/ArthurSonzogni/FTXUI/issues/682
* Fix typo.
Improve the performance of the functions for searching for codepoints
in a table by passing the table array in as a reference instead of copying
it.
Co-authored-by: ArthurSonzogni <sonzogniarthur@gmail.com>
1. Stop taking Ref<XxxOption> in Component constructors. Instead, use
the XxxOption directly. Passing by copy avoid problems developers had
where one was shared in between multiple component, causing issues.
2. Add variants of most component constructors taking a struct only.
This replaces:
https://github.com/ArthurSonzogni/FTXUI/pull/670
This fixes:
https://github.com/ArthurSonzogni/FTXUI/issues/426
Using `auto` seems to create a different output on different platforms.
Notably it was observed that aarch64 compiles return a different
value.
Fix the type of the characters iterated through the string.
Fixes#639
Signed-off-by: Henner Zeller <h.zeller@acm.org>
Depending on the Cursor Key Mode (DECCKM), the terminal sends different
escape sequences:
Key Normal Application
----- -------- -----------
Up ESC [ A ESC O A
Down ESC [ B ESC O B
Right ESC [ C ESC O C
Left ESC [ D ESC O D
Home ESC [ H ESC O H
End ESC [ F ESC O F
I decided not to update the current mode to fit what FTXUI parse, but
instead support parsing both. We convert the sequences from the
"application mode" into the "normal mode".
Bug:https://github.com/ArthurSonzogni/FTXUI/issues/626
Fixed:https://github.com/ArthurSonzogni/FTXUI/issues/626
Based on the existing color decorators, create new ones to apply a gradient effect on the DOM.
Co-authored-by: ArthurSonzogni <sonzogniarthur@gmail.com>
It can be used to give developers a better control on the loop. Users
can use it not to take full control of the thread, and poll FTXUI from
time to time as part of an external loop.
This resolves: https://github.com/ArthurSonzogni/FTXUI/issues/474
MinGW on Linux is case sensitive. Windows is case insensitive.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Add the `SliderOption` option supporting:
```cpp
{
Ref<T> value;
ConstRef<T> min = T(0);
ConstRef<T> max = T(100);
ConstRef<T> increment = (max() - min()) / 20;
GaugeDirection direction = GaugeDirection::Right;
Color color_active = Color::White;
Color color_inactive = Color::GrayDark;
};
```
In particular, this supports multiple direction. This resolves:
https://github.com/ArthurSonzogni/FTXUI/issues/467
This one do not support adding a label. The old constructors can still
be used to have a label.
One single reset code controls both the dim and bold properties. Mixing both led to one of the properties being wrongly reset.
Co-authored-by: Arthur Sonzogni <sonzogniarthur@gmail.com>
Previously, a new 2D vector was allocated for every new frame. This
caused a lot of temporary allocation to be made.
This patch modify "Screen::Clear" so that it do make a new allocation,
but clear the existing one instead.
Bug:https://github.com/ArthurSonzogni/FTXUI/issues/290#issuecomment-1153327251
width and height were being set using the incorrect axes resulting in incorrect canvas dimensions
Co-authored-by: ArthurSonzogni <sonzogniarthur@gmail.com>
- Fix focus in flexbox. This required resetting the focus state at the
beginning of the ComputeRequirement(), because it can now run several
times.
This resolves:https://github.com/ArthurSonzogni/FTXUI/issues/399
- Add Box::Union.
- Add a preliminary implementation of forwarding selected_box from
within the flexbox.
The table is not meant to be used to render more than once. Reset the
dimensions so that, even if it is used wrongly, this is not memory
unsafe.
This was raised by:
https://github.com/ArthurSonzogni/FTXUI/issues/381