1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 12:48:10 +00:00

LibGUI: Add optional "tab key navigation" to AbstractView

If enabled, the view cursor will move right/left when pressing
tab/shift+tab.
This commit is contained in:
Andreas Kling 2020-08-28 21:09:38 +02:00
parent cd930e0f3d
commit 6316525d50
2 changed files with 17 additions and 0 deletions

View file

@ -378,6 +378,19 @@ void AbstractTableView::keydown_event(KeyEvent& event)
selection_update = SelectionUpdate::Shift; selection_update = SelectionUpdate::Shift;
} }
if (is_tab_key_navigation_enabled()) {
if (event.modifiers() == KeyModifier::Mod_Shift && event.key() == KeyCode::Key_Tab) {
move_cursor(CursorMovement::Left, SelectionUpdate::Set);
event.accept();
return;
}
if (!event.modifiers() && event.key() == KeyCode::Key_Tab) {
move_cursor(CursorMovement::Right, SelectionUpdate::Set);
event.accept();
return;
}
}
if (event.key() == KeyCode::Key_Left) { if (event.key() == KeyCode::Key_Left) {
move_cursor(CursorMovement::Left, selection_update); move_cursor(CursorMovement::Left, selection_update);
event.accept(); event.accept();

View file

@ -116,6 +116,9 @@ public:
const ModelIndex& cursor_index() const { return m_cursor_index; } const ModelIndex& cursor_index() const { return m_cursor_index; }
void set_cursor(ModelIndex, SelectionUpdate); void set_cursor(ModelIndex, SelectionUpdate);
bool is_tab_key_navigation_enabled() const { return m_tab_key_navigation_enabled; }
void set_tab_key_navigation_enabled(bool enabled) { m_tab_key_navigation_enabled = enabled; }
protected: protected:
AbstractView(); AbstractView();
virtual ~AbstractView() override; virtual ~AbstractView() override;
@ -162,6 +165,7 @@ private:
unsigned m_edit_triggers { EditTrigger::DoubleClicked | EditTrigger::EditKeyPressed }; unsigned m_edit_triggers { EditTrigger::DoubleClicked | EditTrigger::EditKeyPressed };
bool m_activates_on_selection { false }; bool m_activates_on_selection { false };
bool m_multi_select { true }; bool m_multi_select { true };
bool m_tab_key_navigation_enabled { false };
}; };
} }