diff --git a/Libraries/LibGUI/AbstractTableView.cpp b/Libraries/LibGUI/AbstractTableView.cpp index b2d91bf51d..eb1ce70485 100644 --- a/Libraries/LibGUI/AbstractTableView.cpp +++ b/Libraries/LibGUI/AbstractTableView.cpp @@ -447,48 +447,6 @@ void AbstractTableView::move_selection(int steps) } } -void AbstractTableView::keydown_event(KeyEvent& event) -{ - if (!model()) - return; - auto& model = *this->model(); - if (event.key() == KeyCode::Key_Return) { - activate_selected(); - return; - } - if (event.key() == KeyCode::Key_Up) { - move_selection(-1); - return; - } - if (event.key() == KeyCode::Key_Down) { - move_selection(1); - return; - } - if (event.key() == KeyCode::Key_PageUp) { - int items_per_page = visible_content_rect().height() / item_height(); - auto old_index = selection().first(); - auto new_index = model.index(max(0, old_index.row() - items_per_page), old_index.column()); - if (model.is_valid(new_index)) { - selection().set(new_index); - scroll_into_view(new_index, Orientation::Vertical); - update(); - } - return; - } - if (event.key() == KeyCode::Key_PageDown) { - int items_per_page = visible_content_rect().height() / item_height(); - auto old_index = selection().first(); - auto new_index = model.index(min(model.row_count() - 1, old_index.row() + items_per_page), old_index.column()); - if (model.is_valid(new_index)) { - selection().set(new_index); - scroll_into_view(new_index, Orientation::Vertical); - update(); - } - return; - } - return Widget::keydown_event(event); -} - void AbstractTableView::scroll_into_view(const ModelIndex& index, Orientation orientation) { auto rect = row_rect(index.row()).translated(0, -header_height()); diff --git a/Libraries/LibGUI/AbstractTableView.h b/Libraries/LibGUI/AbstractTableView.h index 1eb1dc753a..7fece2dd44 100644 --- a/Libraries/LibGUI/AbstractTableView.h +++ b/Libraries/LibGUI/AbstractTableView.h @@ -83,7 +83,6 @@ protected: virtual void mousedown_event(MouseEvent&) override; virtual void mousemove_event(MouseEvent&) override; virtual void doubleclick_event(MouseEvent&) override; - virtual void keydown_event(KeyEvent&) override; virtual void leave_event(Core::Event&) override; virtual void context_menu_event(ContextMenuEvent&) override; diff --git a/Libraries/LibGUI/TableView.cpp b/Libraries/LibGUI/TableView.cpp index 2c476e2886..ff16f83406 100644 --- a/Libraries/LibGUI/TableView.cpp +++ b/Libraries/LibGUI/TableView.cpp @@ -155,4 +155,47 @@ void TableView::paint_event(PaintEvent& event) paint_headers(painter); } +void TableView::keydown_event(KeyEvent& event) +{ + if (!model()) + return; + auto& model = *this->model(); + if (event.key() == KeyCode::Key_Return) { + activate_selected(); + return; + } + if (event.key() == KeyCode::Key_Up) { + move_selection(-1); + return; + } + if (event.key() == KeyCode::Key_Down) { + move_selection(1); + return; + } + if (event.key() == KeyCode::Key_PageUp) { + int items_per_page = visible_content_rect().height() / item_height(); + auto old_index = selection().first(); + auto new_index = model.index(max(0, old_index.row() - items_per_page), old_index.column()); + if (model.is_valid(new_index)) { + selection().set(new_index); + scroll_into_view(new_index, Orientation::Vertical); + update(); + } + return; + } + if (event.key() == KeyCode::Key_PageDown) { + int items_per_page = visible_content_rect().height() / item_height(); + auto old_index = selection().first(); + auto new_index = model.index(min(model.row_count() - 1, old_index.row() + items_per_page), old_index.column()); + if (model.is_valid(new_index)) { + selection().set(new_index); + scroll_into_view(new_index, Orientation::Vertical); + update(); + } + return; + } + return Widget::keydown_event(event); +} + + } diff --git a/Libraries/LibGUI/TableView.h b/Libraries/LibGUI/TableView.h index 76dcf565f6..fc228aaebb 100644 --- a/Libraries/LibGUI/TableView.h +++ b/Libraries/LibGUI/TableView.h @@ -38,6 +38,7 @@ public: protected: TableView(); + virtual void keydown_event(KeyEvent&) override; virtual void paint_event(PaintEvent&) override; };