1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-16 20:05:07 +00:00

LibGUI: Make "Return" after tab return to original column in TableView

This commit is contained in:
Max Trussell 2021-06-13 11:46:08 -07:00 committed by GitHub
parent 364d728e66
commit b4da228ea5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 5 deletions

View file

@ -194,6 +194,7 @@ void AbstractTableView::set_column_header_alignment(int column, Gfx::TextAlignme
void AbstractTableView::mousedown_event(MouseEvent& event)
{
m_tab_moves = 0;
if (!model())
return AbstractView::mousedown_event(event);
@ -403,14 +404,21 @@ void AbstractTableView::layout_headers()
void AbstractTableView::keydown_event(KeyEvent& event)
{
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();
++m_tab_moves;
return;
} else if (is_navigation(event)) {
if (event.key() == KeyCode::Key_Return) {
move_cursor_relative(0, -m_tab_moves, SelectionUpdate::Set);
}
m_tab_moves = 0;
}
if (event.modifiers() == KeyModifier::Mod_Shift && event.key() == KeyCode::Key_Tab) {
move_cursor(CursorMovement::Left, SelectionUpdate::Set);
event.accept();
return;
}
}
@ -418,4 +426,22 @@ void AbstractTableView::keydown_event(KeyEvent& event)
AbstractView::keydown_event(event);
}
bool AbstractTableView::is_navigation(GUI::KeyEvent& event)
{
switch (event.key()) {
case KeyCode::Key_Tab:
case KeyCode::Key_Left:
case KeyCode::Key_Right:
case KeyCode::Key_Up:
case KeyCode::Key_Down:
case KeyCode::Key_Return:
case KeyCode::Key_Home:
case KeyCode::Key_End:
case KeyCode::Key_PageUp:
case KeyCode::Key_PageDown:
return true;
default:
return false;
}
}
}