Change summary
crates/gpui/src/app.rs | 6 +++---
crates/search/src/buffer_search.rs | 9 +++++----
crates/workspace/src/pane.rs | 10 +++++-----
3 files changed, 13 insertions(+), 12 deletions(-)
Detailed changes
@@ -4086,10 +4086,10 @@ impl<V: View> WeakViewHandle<V> {
pub fn read_with<T>(
&self,
- cx: &impl BorrowAppContext,
+ cx: &AsyncAppContext,
read: impl FnOnce(&V, &ViewContext<V>) -> T,
) -> Result<T> {
- cx.read_with(|cx| {
+ cx.read(|cx| {
let handle = cx
.upgrade_view_handle(self)
.ok_or_else(|| anyhow!("view {} was dropped", V::ui_name()))?;
@@ -4100,7 +4100,7 @@ impl<V: View> WeakViewHandle<V> {
pub fn update<T>(
&self,
- cx: &mut impl BorrowAppContext,
+ cx: &mut AsyncAppContext,
update: impl FnOnce(&mut V, &mut ViewContext<V>) -> T,
) -> Result<T> {
cx.update(|cx| {
@@ -201,10 +201,11 @@ impl ToolbarItemView for BufferSearchBar {
Some(searchable_item_handle.subscribe_to_search_events(
cx,
Box::new(move |search_event, cx| {
- this.update(cx, |this, cx| {
- this.on_active_searchable_item_event(search_event, cx)
- })
- .log_err();
+ if let Some(this) = this.upgrade(cx) {
+ this.update(cx, |this, cx| {
+ this.on_active_searchable_item_event(search_event, cx)
+ });
+ }
}),
));
@@ -2005,11 +2005,11 @@ impl NavHistory {
}
fn did_update(&self, cx: &mut WindowContext) {
- let pane = self.pane.clone();
- cx.defer(move |cx| {
- pane.update(cx, |pane, cx| pane.history_updated(cx))
- .log_err();
- });
+ if let Some(pane) = self.pane.upgrade(cx) {
+ cx.defer(move |cx| {
+ pane.update(cx, |pane, cx| pane.history_updated(cx));
+ });
+ }
}
}