mirror of
https://codeberg.org/icewind/logsmash.git
synced 2026-06-03 18:14:11 +02:00
make mousewheel scroll instead of change selection
This commit is contained in:
parent
dfcecb9510
commit
5e01154d24
3 changed files with 16 additions and 2 deletions
|
|
@ -86,8 +86,8 @@ fn handle_events(page: UiPage, ui_state: &UiState) -> io::Result<Option<UiEvent>
|
||||||
}
|
}
|
||||||
Event::Mouse(mouse) => {
|
Event::Mouse(mouse) => {
|
||||||
return Ok(match mouse.kind {
|
return Ok(match mouse.kind {
|
||||||
MouseEventKind::ScrollUp => Some(UiEvent::Up(1, false)),
|
MouseEventKind::ScrollUp => Some(UiEvent::Scroll(-1)),
|
||||||
MouseEventKind::ScrollDown => Some(UiEvent::Down(1, false)),
|
MouseEventKind::ScrollDown => Some(UiEvent::Scroll(1)),
|
||||||
MouseEventKind::Down(MouseButton::Left) => {
|
MouseEventKind::Down(MouseButton::Left) => {
|
||||||
find_hit_row(mouse.row, ui_state).map(UiEvent::Enter)
|
find_hit_row(mouse.row, ui_state).map(UiEvent::Enter)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -259,6 +259,12 @@ impl<'a> UiState<'a> {
|
||||||
}
|
}
|
||||||
(true, state)
|
(true, state)
|
||||||
}
|
}
|
||||||
|
(mut state, UiEvent::Scroll(step)) => {
|
||||||
|
if let Some(table_state) = state.table_state_mut() {
|
||||||
|
table_state.scroll(step);
|
||||||
|
}
|
||||||
|
(true, state)
|
||||||
|
}
|
||||||
(mut state, UiEvent::SelectAt(selected)) => {
|
(mut state, UiEvent::SelectAt(selected)) => {
|
||||||
if let Some(table_state) = state.table_state_mut() {
|
if let Some(table_state) = state.table_state_mut() {
|
||||||
table_state.select(selected);
|
table_state.select(selected);
|
||||||
|
|
@ -333,6 +339,7 @@ pub enum UiEvent {
|
||||||
Back,
|
Back,
|
||||||
Up(usize, bool),
|
Up(usize, bool),
|
||||||
Down(usize, bool),
|
Down(usize, bool),
|
||||||
|
Scroll(isize),
|
||||||
Errors,
|
Errors,
|
||||||
Select,
|
Select,
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,13 @@ impl ScrollbarTableState {
|
||||||
after
|
after
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn scroll(&mut self, step: isize) {
|
||||||
|
*self.table.offset_mut() = self.table.offset().saturating_add_signed(step);
|
||||||
|
let selected = self.selected().saturating_add_signed(step).min(self.count - 1);
|
||||||
|
self.table.select(Some(selected));
|
||||||
|
self.scrollbar = self.scrollbar.position(selected);
|
||||||
|
}
|
||||||
|
|
||||||
pub fn select(&mut self, selected: usize) {
|
pub fn select(&mut self, selected: usize) {
|
||||||
self.table.select(Some(selected));
|
self.table.select(Some(selected));
|
||||||
self.scrollbar = self.scrollbar.position(selected);
|
self.scrollbar = self.scrollbar.position(selected);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue