mirror of
https://github.com/RGBCube/serenity
synced 2025-05-20 17:55:08 +00:00
LibGUI: Make "Return" after tab return to original column in TableView
This commit is contained in:
parent
364d728e66
commit
b4da228ea5
2 changed files with 33 additions and 5 deletions
|
@ -194,6 +194,7 @@ void AbstractTableView::set_column_header_alignment(int column, Gfx::TextAlignme
|
||||||
|
|
||||||
void AbstractTableView::mousedown_event(MouseEvent& event)
|
void AbstractTableView::mousedown_event(MouseEvent& event)
|
||||||
{
|
{
|
||||||
|
m_tab_moves = 0;
|
||||||
if (!model())
|
if (!model())
|
||||||
return AbstractView::mousedown_event(event);
|
return AbstractView::mousedown_event(event);
|
||||||
|
|
||||||
|
@ -403,14 +404,21 @@ void AbstractTableView::layout_headers()
|
||||||
void AbstractTableView::keydown_event(KeyEvent& event)
|
void AbstractTableView::keydown_event(KeyEvent& event)
|
||||||
{
|
{
|
||||||
if (is_tab_key_navigation_enabled()) {
|
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) {
|
if (!event.modifiers() && event.key() == KeyCode::Key_Tab) {
|
||||||
move_cursor(CursorMovement::Right, SelectionUpdate::Set);
|
move_cursor(CursorMovement::Right, SelectionUpdate::Set);
|
||||||
event.accept();
|
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;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -418,4 +426,22 @@ void AbstractTableView::keydown_event(KeyEvent& event)
|
||||||
AbstractView::keydown_event(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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,6 +98,7 @@ protected:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void layout_headers();
|
void layout_headers();
|
||||||
|
bool is_navigation(GUI::KeyEvent&);
|
||||||
|
|
||||||
RefPtr<HeaderView> m_column_header;
|
RefPtr<HeaderView> m_column_header;
|
||||||
RefPtr<HeaderView> m_row_header;
|
RefPtr<HeaderView> m_row_header;
|
||||||
|
@ -110,6 +111,7 @@ private:
|
||||||
|
|
||||||
int m_vertical_padding { 8 };
|
int m_vertical_padding { 8 };
|
||||||
int m_horizontal_padding { font().glyph_height() / 2 };
|
int m_horizontal_padding { font().glyph_height() / 2 };
|
||||||
|
int m_tab_moves { 0 };
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue