diff options
author | Andreas Kling <kling@serenityos.org> | 2020-09-02 21:28:12 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-09-02 21:29:31 +0200 |
commit | 27687b1c6e64df818dbadc7f4a5c74fa9397e1f9 (patch) | |
tree | 644fb0505803176ca4733efa9472c0c3d92363c2 | |
parent | 4ba12e9c2306606bcb8ac14617f5698c506342e3 (diff) | |
download | serenity-27687b1c6e64df818dbadc7f4a5c74fa9397e1f9.zip |
LibGUI: Handle cursor keydown events in AbstractView
Move the basic movement keys (up/down/left/right/home/end/pgup/pgdn)
up to AbstractView::keydown_event() and have it call the virtual
move_cursor() which is then implemented by subclasses.
-rw-r--r-- | Libraries/LibGUI/AbstractTableView.cpp | 45 | ||||
-rw-r--r-- | Libraries/LibGUI/AbstractView.cpp | 49 | ||||
-rw-r--r-- | Libraries/LibGUI/AbstractView.h | 1 | ||||
-rw-r--r-- | Libraries/LibGUI/ColumnsView.cpp | 22 | ||||
-rw-r--r-- | Libraries/LibGUI/IconView.cpp | 36 | ||||
-rw-r--r-- | Libraries/LibGUI/ListView.cpp | 20 |
6 files changed, 53 insertions, 120 deletions
diff --git a/Libraries/LibGUI/AbstractTableView.cpp b/Libraries/LibGUI/AbstractTableView.cpp index 4662fbea17..4d30929ad3 100644 --- a/Libraries/LibGUI/AbstractTableView.cpp +++ b/Libraries/LibGUI/AbstractTableView.cpp @@ -373,11 +373,6 @@ void AbstractTableView::set_row_height(int height) void AbstractTableView::keydown_event(KeyEvent& event) { - SelectionUpdate selection_update = SelectionUpdate::Set; - if (event.modifiers() == KeyModifier::Mod_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); @@ -391,46 +386,6 @@ void AbstractTableView::keydown_event(KeyEvent& event) } } - if (event.key() == KeyCode::Key_Left) { - move_cursor(CursorMovement::Left, selection_update); - event.accept(); - return; - } - if (event.key() == KeyCode::Key_Right) { - move_cursor(CursorMovement::Right, selection_update); - event.accept(); - return; - } - if (event.key() == KeyCode::Key_Up) { - move_cursor(CursorMovement::Up, selection_update); - event.accept(); - return; - } - if (event.key() == KeyCode::Key_Down) { - move_cursor(CursorMovement::Down, selection_update); - event.accept(); - return; - } - if (event.key() == KeyCode::Key_Home) { - move_cursor(CursorMovement::Home, selection_update); - event.accept(); - return; - } - if (event.key() == KeyCode::Key_End) { - move_cursor(CursorMovement::End, selection_update); - event.accept(); - return; - } - if (event.key() == KeyCode::Key_PageUp) { - move_cursor(CursorMovement::PageUp, selection_update); - event.accept(); - return; - } - if (event.key() == KeyCode::Key_PageDown) { - move_cursor(CursorMovement::PageDown, selection_update); - event.accept(); - return; - } return AbstractView::keydown_event(event); } diff --git a/Libraries/LibGUI/AbstractView.cpp b/Libraries/LibGUI/AbstractView.cpp index 37990b77ce..c90167e7c7 100644 --- a/Libraries/LibGUI/AbstractView.cpp +++ b/Libraries/LibGUI/AbstractView.cpp @@ -443,4 +443,53 @@ void AbstractView::set_edit_triggers(unsigned triggers) m_edit_triggers = triggers; } +void AbstractView::keydown_event(KeyEvent& event) +{ + SelectionUpdate selection_update = SelectionUpdate::Set; + if (event.modifiers() == KeyModifier::Mod_Shift) { + selection_update = SelectionUpdate::Shift; + } + + if (event.key() == KeyCode::Key_Left) { + move_cursor(CursorMovement::Left, selection_update); + event.accept(); + return; + } + if (event.key() == KeyCode::Key_Right) { + move_cursor(CursorMovement::Right, selection_update); + event.accept(); + return; + } + if (event.key() == KeyCode::Key_Up) { + move_cursor(CursorMovement::Up, selection_update); + event.accept(); + return; + } + if (event.key() == KeyCode::Key_Down) { + move_cursor(CursorMovement::Down, selection_update); + event.accept(); + return; + } + if (event.key() == KeyCode::Key_Home) { + move_cursor(CursorMovement::Home, selection_update); + event.accept(); + return; + } + if (event.key() == KeyCode::Key_End) { + move_cursor(CursorMovement::End, selection_update); + event.accept(); + return; + } + if (event.key() == KeyCode::Key_PageUp) { + move_cursor(CursorMovement::PageUp, selection_update); + event.accept(); + return; + } + if (event.key() == KeyCode::Key_PageDown) { + move_cursor(CursorMovement::PageDown, selection_update); + event.accept(); + return; + } +} + } diff --git a/Libraries/LibGUI/AbstractView.h b/Libraries/LibGUI/AbstractView.h index b2378b6029..2fe2d8d936 100644 --- a/Libraries/LibGUI/AbstractView.h +++ b/Libraries/LibGUI/AbstractView.h @@ -121,6 +121,7 @@ protected: AbstractView(); virtual ~AbstractView() override; + virtual void keydown_event(KeyEvent&) override; virtual void mousedown_event(MouseEvent&) override; virtual void mousemove_event(MouseEvent&) override; virtual void mouseup_event(MouseEvent&) override; diff --git a/Libraries/LibGUI/ColumnsView.cpp b/Libraries/LibGUI/ColumnsView.cpp index 7c8d0db3d4..4ec32ceccc 100644 --- a/Libraries/LibGUI/ColumnsView.cpp +++ b/Libraries/LibGUI/ColumnsView.cpp @@ -320,32 +320,12 @@ void ColumnsView::keydown_event(KeyEvent& event) if (!model()) return; - SelectionUpdate selection_update = SelectionUpdate::Set; - if (event.key() == KeyCode::Key_Return) { activate_selected(); return; } - if (event.key() == KeyCode::Key_Up) { - move_cursor(CursorMovement::Up, selection_update); - return; - } - - if (event.key() == KeyCode::Key_Down) { - move_cursor(CursorMovement::Down, selection_update); - return; - } - - if (event.key() == KeyCode::Key_Left) { - move_cursor(CursorMovement::Left, selection_update); - return; - } - - if (event.key() == KeyCode::Key_Right) { - move_cursor(CursorMovement::Right, selection_update); - return; - } + AbstractView::keydown_event(event); } } diff --git a/Libraries/LibGUI/IconView.cpp b/Libraries/LibGUI/IconView.cpp index 26d3899341..9b26ee78b1 100644 --- a/Libraries/LibGUI/IconView.cpp +++ b/Libraries/LibGUI/IconView.cpp @@ -602,45 +602,11 @@ void IconView::keydown_event(KeyEvent& event) if (!m_visual_row_count || !m_visual_column_count) return; - SelectionUpdate selection_update = SelectionUpdate::Set; - if (event.key() == KeyCode::Key_Return) { activate_selected(); return; } - if (event.key() == KeyCode::Key_Home) { - move_cursor(CursorMovement::Home, selection_update); - return; - } - if (event.key() == KeyCode::Key_End) { - move_cursor(CursorMovement::End, selection_update); - return; - } - if (event.key() == KeyCode::Key_Up) { - move_cursor(CursorMovement::Up, selection_update); - return; - } - if (event.key() == KeyCode::Key_Down) { - move_cursor(CursorMovement::Down, selection_update); - return; - } - if (event.key() == KeyCode::Key_Left) { - move_cursor(CursorMovement::Left, selection_update); - return; - } - if (event.key() == KeyCode::Key_Right) { - move_cursor(CursorMovement::Right, selection_update); - return; - } - if (event.key() == KeyCode::Key_PageUp) { - move_cursor(CursorMovement::PageUp, selection_update); - return; - } - if (event.key() == KeyCode::Key_PageDown) { - move_cursor(CursorMovement::PageDown, selection_update); - return; - } - return Widget::keydown_event(event); + AbstractView::keydown_event(event); } void IconView::move_cursor(CursorMovement movement, SelectionUpdate selection_update) diff --git a/Libraries/LibGUI/ListView.cpp b/Libraries/LibGUI/ListView.cpp index 50e3449f05..f6a15031a2 100644 --- a/Libraries/LibGUI/ListView.cpp +++ b/Libraries/LibGUI/ListView.cpp @@ -194,35 +194,17 @@ void ListView::keydown_event(KeyEvent& event) if (!model()) return; - SelectionUpdate selection_update = SelectionUpdate::Set; - ModelIndex new_index; if (event.key() == KeyCode::Key_Return) { activate_selected(); return; } - if (event.key() == KeyCode::Key_Up) { - move_cursor(CursorMovement::Up, selection_update); - return; - } - if (event.key() == KeyCode::Key_Down) { - move_cursor(CursorMovement::Down, selection_update); - return; - } - if (event.key() == KeyCode::Key_PageUp) { - move_cursor(CursorMovement::PageUp, selection_update); - return; - } - if (event.key() == KeyCode::Key_PageDown) { - move_cursor(CursorMovement::PageDown, selection_update); - return; - } if (event.key() == KeyCode::Key_Escape) { if (on_escape_pressed) on_escape_pressed(); return; } - return AbstractView::keydown_event(event); + AbstractView::keydown_event(event); } void ListView::move_cursor_relative(int steps, SelectionUpdate selection_update) |