@@ -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,29 @@ 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)
+ .into_any_element()
+ .draw(
+ bounds.origin,
+ bounds.size.map(AvailableSpace::Definite),
+ cx,
+ );
+ })
+ .size_full()
.into_any_element()
}),
)
@@ -4,8 +4,8 @@ use gpui::{
BorrowWindow, Bounds, DispatchPhase, Element, ElementId, ExternalPaths, FocusHandle, Font,
FontStyle, FontWeight, HighlightStyle, Hsla, InteractiveElement, InteractiveElementState,
Interactivity, IntoElement, LayoutId, Model, ModelContext, ModifiersChangedEvent, MouseButton,
- Pixels, PlatformInputHandler, Point, Rgba, ShapedLine, Size, StatefulInteractiveElement,
- Styled, TextRun, TextStyle, TextSystem, UnderlineStyle, WhiteSpace, WindowContext,
+ Pixels, PlatformInputHandler, Point, Rgba, ShapedLine, StatefulInteractiveElement, Styled,
+ TextRun, TextStyle, TextSystem, UnderlineStyle, WhiteSpace, WindowContext,
};
use itertools::Itertools;
use language::CursorShape;
@@ -855,9 +855,7 @@ impl Element for TerminalElement {
}
if let Some(mut element) = layout.hyperlink_tooltip.take() {
- let width: AvailableSpace = bounds.size.width.into();
- let height: AvailableSpace = bounds.size.height.into();
- element.draw(origin, Size { width, height }, cx)
+ element.draw(origin, bounds.size.map(AvailableSpace::Definite), cx)
}
});
}