Compare commits

..

2 Commits

Author SHA1 Message Date
LagoLunatic cc534422e0
Merge ef2723748a into a119d9a6dd 2024-11-29 18:11:14 +00:00
LagoLunatic ef2723748a Found a better place to clear the autoscroll flag
DiffViewState::post_update is where the flag gets set, so clearing it right before that at the start of the function seems to make the most sense, instead of doing it in App::update.
2024-11-29 13:10:00 -05:00
2 changed files with 6 additions and 4 deletions

View File

@ -831,8 +831,6 @@ impl eframe::App for App {
} else {
symbol_diff_ui(ui, diff_state, appearance)
};
// Clear the autoscroll flag so it doesn't scroll continuously.
diff_state.symbol_state.autoscroll_to_highlighted_symbols = false;
});
project_window(ctx, state, show_project_config, config_state, appearance);

View File

@ -199,6 +199,9 @@ impl DiffViewState {
ctx.output_mut(|o| o.open_url = Some(OpenUrl::new_tab(result.scratch_url)));
}
// Clear the autoscroll flag so that it doesn't scroll continuously.
self.symbol_state.autoscroll_to_highlighted_symbols = false;
let Some(action) = action else {
return;
};
@ -540,8 +543,9 @@ fn symbol_ui(
// Automatically scroll the view to encompass the selected symbol in case the user selected
// an offscreen symbol by using a keyboard shortcut.
ui.scroll_to_rect_animation(response.rect, None, ScrollAnimation::none());
// This state flag will be reset in App::update at the end of every frame so that we don't
// continuously scroll the view back when the user is trying to manually scroll away.
// This autoscroll state flag will be reset in DiffViewState::post_update at the end of
// every frame so that we don't continuously scroll the view back when the user is trying to
// manually scroll away.
}
if response.clicked() || (selected && hotkeys::enter_pressed(ui.ctx())) {
if let Some(section) = section {