Skip to content

Commit 05a89b8

Browse files
committed
Implement table scroll down/up action
1 parent 1af7309 commit 05a89b8

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

src/view/table.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,14 @@ impl TableView {
207207
self.table_state.select_prev_col();
208208
self.table_state.update_table_state();
209209
}
210+
UserEvent::ScrollDown => {
211+
self.table_state.scroll_down();
212+
self.table_state.update_table_state();
213+
}
214+
UserEvent::ScrollUp => {
215+
self.table_state.scroll_up();
216+
self.table_state.update_table_state();
217+
}
210218
UserEvent::QuickFilter => {
211219
self.start_filtering();
212220
}

src/widget/table.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,30 @@ impl TableState {
220220
self.offset_col = self.total_cols - count;
221221
}
222222

223+
pub fn scroll_down(&mut self) {
224+
if self.total_rows == 0 {
225+
return;
226+
}
227+
if self.offset_row + self.height < self.total_rows {
228+
self.offset_row += 1;
229+
if self.selected_row < self.offset_row {
230+
self.selected_row = self.offset_row;
231+
}
232+
}
233+
}
234+
235+
pub fn scroll_up(&mut self) {
236+
if self.total_rows == 0 {
237+
return;
238+
}
239+
if self.offset_row > 0 {
240+
self.offset_row -= 1;
241+
if self.selected_row - self.offset_row >= self.height {
242+
self.selected_row = self.offset_row + self.height - 1;
243+
}
244+
}
245+
}
246+
223247
pub fn select_index(&mut self, index: usize, offset_index: usize) {
224248
if index >= self.total_rows {
225249
return;

0 commit comments

Comments
 (0)