mirror of
https://github.com/damus-io/notedeck.git
synced 2024-09-16 11:53:30 +00:00
don't bump timeline when adding notes
This is quite different than Damus iOS. The timeline will continually add new items without bumping scroll position, thanks to egui-virtual-list's `items_inserted_at_start` function. Closes: https://github.com/damus-io/notedeck/issues/38 Fixes: https://github.com/damus-io/notedeck/issues/59 Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
parent
0e0e5d0eaa
commit
4fc6e225ca
19
src/app.rs
19
src/app.rs
@ -135,7 +135,7 @@ fn try_process_event(damus: &mut Damus, ctx: &egui::Context) -> Result<()> {
|
||||
let txn = Transaction::new(&damus.ndb)?;
|
||||
let mut unknown_ids: HashSet<UnknownId> = HashSet::new();
|
||||
for timeline in 0..damus.timelines.len() {
|
||||
if let Err(err) = poll_notes_for_timeline(damus, &txn, timeline, &mut unknown_ids) {
|
||||
if let Err(err) = poll_notes_for_timeline(ctx, damus, &txn, timeline, &mut unknown_ids) {
|
||||
error!("{}", err);
|
||||
}
|
||||
}
|
||||
@ -238,6 +238,7 @@ fn get_unknown_note_ids<'a>(
|
||||
}
|
||||
|
||||
fn poll_notes_for_timeline<'a>(
|
||||
ctx: &egui::Context,
|
||||
damus: &mut Damus,
|
||||
txn: &'a Transaction,
|
||||
timeline: usize,
|
||||
@ -268,8 +269,20 @@ fn poll_notes_for_timeline<'a>(
|
||||
})
|
||||
.collect();
|
||||
|
||||
damus.timelines[timeline].notes =
|
||||
timeline::merge_sorted_vecs(&damus.timelines[timeline].notes, &new_refs);
|
||||
let timeline = &mut damus.timelines[timeline];
|
||||
let prev_items = timeline.notes.len();
|
||||
timeline.notes = timeline::merge_sorted_vecs(&timeline.notes, &new_refs);
|
||||
let new_items = timeline.notes.len() - prev_items;
|
||||
|
||||
// TODO: technically items could have been added inbetween
|
||||
timeline
|
||||
.list
|
||||
.clone()
|
||||
.lock()
|
||||
.unwrap()
|
||||
.items_inserted_at_start(new_items);
|
||||
|
||||
ctx.request_repaint();
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
@ -153,6 +153,7 @@ pub fn timeline_view(ui: &mut egui::Ui, app: &mut Damus, timeline: usize) {
|
||||
ui.add_space(3.0);
|
||||
|
||||
egui::ScrollArea::vertical()
|
||||
.animated(false)
|
||||
.scroll_bar_visibility(ScrollBarVisibility::AlwaysVisible)
|
||||
.show(ui, |ui| {
|
||||
let len = app.timelines[timeline].notes.len();
|
||||
|
Loading…
Reference in New Issue
Block a user