Added back

Added the ability to use the Up and Left buttons simultaneously to cause the cursor to move to the top left of the screen
This commit is contained in:
heurist1 2021-10-09 22:46:05 +01:00
parent 848dba44d8
commit a49c35088d
3 changed files with 15 additions and 1 deletions

View File

@ -298,6 +298,12 @@ void EventDispatcher::handle_switches() {
}
if( in_key_event ) {
if (switches_state[(size_t)ui::KeyEvent::Left] && switches_state[(size_t)ui::KeyEvent::Up])
{
const auto event = static_cast<ui::KeyEvent>(ui::KeyEvent::Back);
context.focus_manager().update(top_widget, event);
}
// If we're in a key event, return. We will ignore all additional key
// presses until the first key is released. We also want to ignore events
// where the last key held generates a key event when other pressed keys

View File

@ -325,6 +325,7 @@ enum class KeyEvent {
Down = 2,
Up = 3,
Select = 4,
Back = 5, /* Left and Up together */
};
using EncoderEvent = int32_t;

View File

@ -179,7 +179,14 @@ void FocusManager::update(
};
const auto nearest = std::min_element(collection.cbegin(), collection.cend(), compare_fn);
if( nearest != collection.cend() ) {
// Up and left to indicate back
if (event == KeyEvent::Back) {
collection.clear();
widget_collect_visible(top_widget, find_back_fn, collection);
if (!collection.empty())
set_focus_widget(collection[0].first);
}
else if( nearest != collection.cend() ) {
//focus->blur();
const auto new_focus = (*nearest).first;
set_focus_widget(new_focus);