fix(tui): clear stale scrollbar drag state
This commit is contained in:
@@ -2467,6 +2467,7 @@ impl App {
|
||||
|
||||
self.viewport.pending_scroll_delta = 0;
|
||||
self.viewport.transcript_selection.clear();
|
||||
self.viewport.transcript_scrollbar_dragging = false;
|
||||
|
||||
self.viewport.last_transcript_area = None;
|
||||
self.viewport.last_transcript_top = 0;
|
||||
|
||||
@@ -7338,6 +7338,8 @@ fn handle_mouse_event(app: &mut App, mouse: MouseEvent) -> Vec<ViewEvent> {
|
||||
}
|
||||
}
|
||||
MouseEventKind::Down(MouseButton::Left) => {
|
||||
app.viewport.transcript_scrollbar_dragging = false;
|
||||
|
||||
if mouse_hits_rect(mouse, app.viewport.jump_to_latest_button_area) {
|
||||
app.scroll_to_bottom();
|
||||
return Vec::new();
|
||||
|
||||
@@ -359,6 +359,38 @@ fn transcript_scrollbar_drag_maps_mouse_row_to_scroll_position() {
|
||||
assert!(!app.viewport.transcript_scrollbar_dragging);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn new_left_down_clears_stale_transcript_scrollbar_drag() {
|
||||
let mut app = create_test_app();
|
||||
app.history = vec![HistoryCell::Assistant {
|
||||
content: "alpha beta".to_string(),
|
||||
streaming: false,
|
||||
}];
|
||||
app.resync_history_revisions();
|
||||
app.viewport.last_transcript_area = Some(Rect {
|
||||
x: 2,
|
||||
y: 5,
|
||||
width: 20,
|
||||
height: 10,
|
||||
});
|
||||
app.viewport.last_transcript_visible = 10;
|
||||
app.viewport.last_transcript_total = 110;
|
||||
app.viewport.transcript_scrollbar_dragging = true;
|
||||
|
||||
let events = handle_mouse_event(
|
||||
&mut app,
|
||||
MouseEvent {
|
||||
kind: MouseEventKind::Down(MouseButton::Left),
|
||||
column: 3,
|
||||
row: 5,
|
||||
modifiers: KeyModifiers::NONE,
|
||||
},
|
||||
);
|
||||
|
||||
assert!(events.is_empty());
|
||||
assert!(!app.viewport.transcript_scrollbar_dragging);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn right_click_opens_context_menu() {
|
||||
let mut app = create_test_app();
|
||||
|
||||
Reference in New Issue
Block a user