mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2025-08-21 17:46:46 +08:00
Fix slider Up key press. (#1099)
Some checks are pending
Build / Bazel, ${{ matrix.cxx }}, ${{ matrix.os }} (cl, cl, windows-latest) (push) Waiting to run
Build / Bazel, ${{ matrix.cxx }}, ${{ matrix.os }} (clang, clang++, macos-latest) (push) Waiting to run
Build / Bazel, ${{ matrix.cxx }}, ${{ matrix.os }} (clang, clang++, ubuntu-latest) (push) Waiting to run
Build / Bazel, ${{ matrix.cxx }}, ${{ matrix.os }} (gcc, g++, macos-latest) (push) Waiting to run
Build / Bazel, ${{ matrix.cxx }}, ${{ matrix.os }} (gcc, g++, ubuntu-latest) (push) Waiting to run
Build / CMake, ${{ matrix.compiler }}, ${{ matrix.os }} (cl, Windows MSVC, windows-latest) (push) Waiting to run
Build / CMake, ${{ matrix.compiler }}, ${{ matrix.os }} (gcc, Linux GCC, ubuntu-latest) (push) Waiting to run
Build / CMake, ${{ matrix.compiler }}, ${{ matrix.os }} (llvm, llvm-cov gcov, Linux Clang, ubuntu-latest) (push) Waiting to run
Build / CMake, ${{ matrix.compiler }}, ${{ matrix.os }} (llvm, llvm-cov gcov, MacOS clang, macos-latest) (push) Waiting to run
Build / Test modules (llvm, ubuntu-latest) (push) Waiting to run
Documentation / documentation (push) Waiting to run
Some checks are pending
Build / Bazel, ${{ matrix.cxx }}, ${{ matrix.os }} (cl, cl, windows-latest) (push) Waiting to run
Build / Bazel, ${{ matrix.cxx }}, ${{ matrix.os }} (clang, clang++, macos-latest) (push) Waiting to run
Build / Bazel, ${{ matrix.cxx }}, ${{ matrix.os }} (clang, clang++, ubuntu-latest) (push) Waiting to run
Build / Bazel, ${{ matrix.cxx }}, ${{ matrix.os }} (gcc, g++, macos-latest) (push) Waiting to run
Build / Bazel, ${{ matrix.cxx }}, ${{ matrix.os }} (gcc, g++, ubuntu-latest) (push) Waiting to run
Build / CMake, ${{ matrix.compiler }}, ${{ matrix.os }} (cl, Windows MSVC, windows-latest) (push) Waiting to run
Build / CMake, ${{ matrix.compiler }}, ${{ matrix.os }} (gcc, Linux GCC, ubuntu-latest) (push) Waiting to run
Build / CMake, ${{ matrix.compiler }}, ${{ matrix.os }} (llvm, llvm-cov gcov, Linux Clang, ubuntu-latest) (push) Waiting to run
Build / CMake, ${{ matrix.compiler }}, ${{ matrix.os }} (llvm, llvm-cov gcov, MacOS clang, macos-latest) (push) Waiting to run
Build / Test modules (llvm, ubuntu-latest) (push) Waiting to run
Documentation / documentation (push) Waiting to run
The direction was inverted. It caused the inability to increase it. Fixed:https://github.com/ArthurSonzogni/FTXUI/issues/1093
This commit is contained in:
parent
bfd07ba309
commit
21b24a1b78
@ -29,6 +29,8 @@ Next
|
|||||||
### Component
|
### Component
|
||||||
- Fix ScreenInteractive::FixedSize screen stomps on the preceding terminal
|
- Fix ScreenInteractive::FixedSize screen stomps on the preceding terminal
|
||||||
output. Thanks @zozowell in #1064.
|
output. Thanks @zozowell in #1064.
|
||||||
|
- Fix vertical `ftxui::Slider`. The "up" key was previously decreasing the
|
||||||
|
value. Thanks @its-pablo in #1093 for reporting the issue.
|
||||||
|
|
||||||
|
|
||||||
6.1.9 (2025-05-07)
|
6.1.9 (2025-05-07)
|
||||||
|
@ -33,6 +33,20 @@ Decorator flexDirection(Direction direction) {
|
|||||||
return xflex; // NOT_REACHED()
|
return xflex; // NOT_REACHED()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Direction Opposite(Direction d) {
|
||||||
|
switch (d) {
|
||||||
|
case Direction::Up:
|
||||||
|
return Direction::Down;
|
||||||
|
case Direction::Down:
|
||||||
|
return Direction::Up;
|
||||||
|
case Direction::Left:
|
||||||
|
return Direction::Right;
|
||||||
|
case Direction::Right:
|
||||||
|
return Direction::Left;
|
||||||
|
}
|
||||||
|
return d; // NOT_REACHED()
|
||||||
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
class SliderBase : public SliderOption<T>, public ComponentBase {
|
class SliderBase : public SliderOption<T>, public ComponentBase {
|
||||||
public:
|
public:
|
||||||
@ -47,59 +61,15 @@ class SliderBase : public SliderOption<T>, public ComponentBase {
|
|||||||
flexDirection(this->direction) | reflect(gauge_box_) | gauge_color;
|
flexDirection(this->direction) | reflect(gauge_box_) | gauge_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnLeft() {
|
void OnDirection(Direction pressed) {
|
||||||
switch (this->direction) {
|
if (pressed == this->direction) {
|
||||||
case Direction::Right:
|
|
||||||
this->value() -= this->increment();
|
|
||||||
break;
|
|
||||||
case Direction::Left:
|
|
||||||
this->value() += this->increment();
|
this->value() += this->increment();
|
||||||
break;
|
return;
|
||||||
case Direction::Up:
|
|
||||||
case Direction::Down:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnRight() {
|
if (pressed == Opposite(this->direction)) {
|
||||||
switch (this->direction) {
|
|
||||||
case Direction::Right:
|
|
||||||
this->value() += this->increment();
|
|
||||||
break;
|
|
||||||
case Direction::Left:
|
|
||||||
this->value() -= this->increment();
|
this->value() -= this->increment();
|
||||||
break;
|
return;
|
||||||
case Direction::Up:
|
|
||||||
case Direction::Down:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnUp() {
|
|
||||||
switch (this->direction) {
|
|
||||||
case Direction::Up:
|
|
||||||
this->value() -= this->increment();
|
|
||||||
break;
|
|
||||||
case Direction::Down:
|
|
||||||
this->value() += this->increment();
|
|
||||||
break;
|
|
||||||
case Direction::Left:
|
|
||||||
case Direction::Right:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnDown() {
|
|
||||||
switch (this->direction) {
|
|
||||||
case Direction::Down:
|
|
||||||
this->value() += this->increment();
|
|
||||||
break;
|
|
||||||
case Direction::Up:
|
|
||||||
this->value() -= this->increment();
|
|
||||||
break;
|
|
||||||
case Direction::Left:
|
|
||||||
case Direction::Right:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,16 +80,16 @@ class SliderBase : public SliderOption<T>, public ComponentBase {
|
|||||||
|
|
||||||
T old_value = this->value();
|
T old_value = this->value();
|
||||||
if (event == Event::ArrowLeft || event == Event::Character('h')) {
|
if (event == Event::ArrowLeft || event == Event::Character('h')) {
|
||||||
OnLeft();
|
OnDirection(Direction::Left);
|
||||||
}
|
}
|
||||||
if (event == Event::ArrowRight || event == Event::Character('l')) {
|
if (event == Event::ArrowRight || event == Event::Character('l')) {
|
||||||
OnRight();
|
OnDirection(Direction::Right);
|
||||||
}
|
}
|
||||||
if (event == Event::ArrowUp || event == Event::Character('k')) {
|
if (event == Event::ArrowUp || event == Event::Character('k')) {
|
||||||
OnDown();
|
OnDirection(Direction::Up);
|
||||||
}
|
}
|
||||||
if (event == Event::ArrowDown || event == Event::Character('j')) {
|
if (event == Event::ArrowDown || event == Event::Character('j')) {
|
||||||
OnUp();
|
OnDirection(Direction::Down);
|
||||||
}
|
}
|
||||||
|
|
||||||
this->value() = std::max(this->min(), std::min(this->max(), this->value()));
|
this->value() = std::max(this->min(), std::min(this->max(), this->value()));
|
||||||
|
Loading…
Reference in New Issue
Block a user