Using TAB key event.

A key event that makes use of TAB key to cycle the elements.

Co-authored-by: Trim Bresilla <trim.bresilla@gmail.com>"
Co-authored-by: ArthurSonzogni <sonzogniarthur@gmail.com>
This commit is contained in:
ArthurSonzogni
2019-11-01 19:52:41 +01:00
parent 7f0381e30a
commit 22f8f0d3b7
6 changed files with 54 additions and 55 deletions

View File

@@ -44,45 +44,33 @@ Component* Container::ActiveChild() {
}
bool Container::VerticalEvent(Event event) {
selected_ %= children_.size();
// Left pressed ?
if (event == Event::ArrowUp || event == Event::Character('k')) {
if (selected_ != 0) {
selected_--;
return true;
}
}
int old_selected = selected_;
if (event == Event::ArrowUp || event == Event::Character('k'))
selected_--;
if (event == Event::ArrowDown || event == Event::Character('j'))
selected_++;
if (event == Event::Tab && children_.size())
selected_ = (selected_ + 1) % children_.size();
if (event == Event::TabReverse && children_.size())
selected_ = (selected_ + children_.size() - 1) % children_.size();
// Left pressed ?
if (event == Event::ArrowDown || event == Event::Character('j')) {
if (selected_ != int(children_.size()) - 1) {
selected_++;
return true;
}
}
return false;
selected_ = std::max(0, std::min(int(children_.size()) - 1, selected_));
return old_selected != selected_;
}
bool Container::HorizontalEvent(Event event) {
selected_ %= children_.size();
// Left pressed ?
if (event == Event::ArrowLeft || event == Event::Character('h')) {
if (selected_ != 0) {
selected_--;
return true;
}
}
int old_selected = selected_;
if (event == Event::ArrowLeft || event == Event::Character('h'))
selected_--;
if (event == Event::ArrowRight || event == Event::Character('l'))
selected_++;
if (event == Event::Tab && children_.size())
selected_ = (selected_ + 1) % children_.size();
if (event == Event::TabReverse && children_.size())
selected_ = (selected_ + children_.size() - 1) % children_.size();
// Left pressed ?
if (event == Event::ArrowRight || event == Event::Character('l')) {
if (selected_ != int(children_.size()) - 1) {
selected_++;
return true;
}
}
return false;
selected_ = std::max(0, std::min(int(children_.size()) - 1, selected_));
return old_selected != selected_;
}
Element Container::Render() {
@@ -91,7 +79,7 @@ Element Container::Render() {
Element Container::VerticalRender() {
Elements elements;
for(auto& it : children_)
for (auto& it : children_)
elements.push_back(it->Render());
if (elements.size() == 0)
return text(L"Empty container");
@@ -100,7 +88,7 @@ Element Container::VerticalRender() {
Element Container::HorizontalRender() {
Elements elements;
for(auto& it : children_)
for (auto& it : children_)
elements.push_back(it->Render());
if (elements.size() == 0)
return text(L"Empty container");