mirror of
https://github.com/zed-industries/zed.git
synced 2025-01-01 06:43:24 +03:00
Allow scrolling saved conversations
This commit is contained in:
parent
b0ee7b2fb9
commit
e2a4474200
@ -29,12 +29,12 @@ use editor::{
|
||||
use fs::Fs;
|
||||
use futures::StreamExt;
|
||||
use gpui::{
|
||||
div, point, relative, rems, uniform_list, Action, AnyElement, AppContext, AsyncWindowContext,
|
||||
ClipboardItem, Context, Div, EventEmitter, FocusHandle, Focusable, FocusableView, FontStyle,
|
||||
FontWeight, HighlightStyle, InteractiveElement, IntoElement, Model, ModelContext,
|
||||
ParentElement, Pixels, PromptLevel, Render, SharedString, StatefulInteractiveElement, Styled,
|
||||
Subscription, Task, TextStyle, UniformListScrollHandle, View, ViewContext, VisualContext,
|
||||
WeakModel, WeakView, WhiteSpace, WindowContext,
|
||||
canvas, div, point, relative, rems, uniform_list, Action, AnyElement, AppContext,
|
||||
AsyncWindowContext, AvailableSpace, ClipboardItem, Context, Div, EventEmitter, FocusHandle,
|
||||
Focusable, FocusableView, FontStyle, FontWeight, HighlightStyle, InteractiveElement,
|
||||
IntoElement, Model, ModelContext, ParentElement, Pixels, PromptLevel, Render, SharedString,
|
||||
StatefulInteractiveElement, Styled, Subscription, Task, TextStyle, UniformListScrollHandle,
|
||||
View, ViewContext, VisualContext, WeakModel, WeakView, WhiteSpace, WindowContext,
|
||||
};
|
||||
use language::{language_settings::SoftWrap, Buffer, LanguageRegistry, ToOffset as _};
|
||||
use project::Project;
|
||||
@ -1184,17 +1184,28 @@ impl Render for AssistantPanel {
|
||||
.child(if let Some(editor) = self.active_editor() {
|
||||
editor.clone().into_any_element()
|
||||
} else {
|
||||
uniform_list(
|
||||
cx.view().clone(),
|
||||
"saved_conversations",
|
||||
self.saved_conversations.len(),
|
||||
|this, range, cx| {
|
||||
range
|
||||
.map(|ix| this.render_saved_conversation(ix, cx))
|
||||
.collect()
|
||||
},
|
||||
)
|
||||
.track_scroll(self.saved_conversations_scroll_handle.clone())
|
||||
let view = cx.view().clone();
|
||||
let scroll_handle = self.saved_conversations_scroll_handle.clone();
|
||||
let conversation_count = self.saved_conversations.len();
|
||||
canvas(move |bounds, cx| {
|
||||
uniform_list(
|
||||
view,
|
||||
"saved_conversations",
|
||||
conversation_count,
|
||||
|this, range, cx| {
|
||||
range
|
||||
.map(|ix| this.render_saved_conversation(ix, cx))
|
||||
.collect()
|
||||
},
|
||||
)
|
||||
.track_scroll(scroll_handle)
|
||||
.draw(
|
||||
bounds.origin,
|
||||
bounds.size,
|
||||
cx,
|
||||
);
|
||||
})
|
||||
.size_full()
|
||||
.into_any_element()
|
||||
}),
|
||||
)
|
||||
|
@ -23,6 +23,17 @@ pub trait IntoElement: Sized {
|
||||
self.into_element().into_any()
|
||||
}
|
||||
|
||||
fn draw<T>(self, origin: Point<Pixels>, available_space: Size<T>, cx: &mut WindowContext)
|
||||
where
|
||||
T: Clone + Default + Debug + Into<AvailableSpace>,
|
||||
{
|
||||
let element = DrawableElement {
|
||||
element: Some(self.into_element()),
|
||||
phase: ElementDrawPhase::Start,
|
||||
};
|
||||
DrawableElement::draw(element, origin, available_space.map(Into::into), cx);
|
||||
}
|
||||
|
||||
fn draw_and_update_state<T, R>(
|
||||
self,
|
||||
origin: Point<Pixels>,
|
||||
|
Loading…
Reference in New Issue
Block a user