Show a border when scrolled in chat

This commit is contained in:
Conrad Irwin 2024-01-13 22:19:21 -07:00
parent c810af40d3
commit 818cbb2415
2 changed files with 24 additions and 15 deletions

View file

@ -112,7 +112,7 @@ impl ChatPanel {
if event.visible_range.start < MESSAGE_LOADING_THRESHOLD { if event.visible_range.start < MESSAGE_LOADING_THRESHOLD {
this.load_more_messages(cx); this.load_more_messages(cx);
} }
this.is_scrolled_to_bottom = event.visible_range.end == event.count; this.is_scrolled_to_bottom = !event.is_scrolled;
})); }));
let mut this = Self { let mut this = Self {
@ -567,7 +567,7 @@ impl Render for ChatPanel {
), ),
), ),
) )
.child(div().flex_grow().px_2().py_1().map(|this| { .child(div().flex_grow().px_2().pt_1().map(|this| {
if self.active_chat.is_some() { if self.active_chat.is_some() {
this.child(list(self.message_list.clone()).full()) this.child(list(self.message_list.clone()).full())
} else { } else {
@ -597,7 +597,13 @@ impl Render for ChatPanel {
) )
} }
})) }))
.child(h_stack().p_2().map(|el| { .child(
h_stack()
.when(!self.is_scrolled_to_bottom, |el| {
el.border_t_1().border_color(cx.theme().colors().border)
})
.p_2()
.map(|el| {
if self.active_chat.is_some() { if self.active_chat.is_some() {
el.child(self.message_editor.clone()) el.child(self.message_editor.clone())
} else { } else {
@ -609,7 +615,8 @@ impl Render for ChatPanel {
.bg(cx.theme().colors().editor_background), .bg(cx.theme().colors().editor_background),
) )
} }
})) }),
)
.into_any() .into_any()
} }
} }

View file

@ -43,6 +43,7 @@ pub enum ListAlignment {
pub struct ListScrollEvent { pub struct ListScrollEvent {
pub visible_range: Range<usize>, pub visible_range: Range<usize>,
pub count: usize, pub count: usize,
pub is_scrolled: bool,
} }
#[derive(Clone)] #[derive(Clone)]
@ -253,6 +254,7 @@ impl StateInner {
&ListScrollEvent { &ListScrollEvent {
visible_range, visible_range,
count: self.items.summary().count, count: self.items.summary().count,
is_scrolled: self.logical_scroll_top.is_some(),
}, },
cx, cx,
); );