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

LibGUI: Allow basic keyboard navigation in GTableView.

Pressing Enter will now "activate" the selected index, meaning that
the model gets a call to activate(GModelIndex).
This commit is contained in:
Andreas Kling 2019-03-01 13:48:08 +01:00
parent e1d0a3f226
commit b5dcad932e
3 changed files with 32 additions and 1 deletions

View file

@ -2,6 +2,7 @@
#include <LibGUI/GTableModel.h>
#include <LibGUI/GScrollBar.h>
#include <SharedGraphics/Painter.h>
#include <Kernel/KeyCode.h>
GTableView::GTableView(GWidget* parent)
: GWidget(parent)
@ -167,3 +168,25 @@ int GTableView::item_count() const
{
return m_model->row_count();
}
void GTableView::keydown_event(GKeyEvent& event)
{
if (!model())
return;
auto& model = *this->model();
if (event.key() == KeyCode::Key_Return) {
model.activate(model.selected_index());
return;
}
if (event.key() == KeyCode::Key_Up) {
model.set_selected_index({ model.selected_index().row() - 1, model.selected_index().column() });
update();
return;
}
if (event.key() == KeyCode::Key_Down) {
model.set_selected_index({ model.selected_index().row() + 1, model.selected_index().column() });
update();
return;
}
return GTableView::keydown_event(event);
}