cache image only when it needed

This commit is contained in:
2026-09-16 09:15:17 +07:00
parent d66681ec5e
commit 413ce04476
3 changed files with 20 additions and 23 deletions
+16 -21
View File
@@ -9,7 +9,7 @@ use device::{DeviceEvent, DeviceRegistry};
use gpui::prelude::FluentBuilder; use gpui::prelude::FluentBuilder;
use gpui::{ use gpui::{
Action, App, AppContext, Axis, Context, Entity, InteractiveElement, IntoElement, ParentElement, Action, App, AppContext, Axis, Context, Entity, InteractiveElement, IntoElement, ParentElement,
Render, SharedString, Styled, Subscription, Task, Window, div, image_cache, px, retain_all, Render, SharedString, Styled, Subscription, Task, Window, div, px,
}; };
use nostr_sdk::prelude::*; use nostr_sdk::prelude::*;
use person::{PersonRegistry, shorten_pubkey}; use person::{PersonRegistry, shorten_pubkey};
@@ -773,31 +773,26 @@ impl Render for Workspace {
.relative() .relative()
.size_full() .size_full()
.child( .child(
image_cache(retain_all("workspace")) v_flex()
.relative()
.size_full() .size_full()
// Title Bar
.child( .child(
v_flex() TitleBar::new()
.child(self.titlebar_left(cx))
.child(self.titlebar_right(cx)),
)
// Main
.child(
h_flex()
.size_full() .size_full()
// Title Bar
.child( .child(
TitleBar::new() div()
.child(self.titlebar_left(cx)) .flex_shrink_0()
.child(self.titlebar_right(cx)), .h_full()
.w(SIDEBAR_WIDTH)
.child(self.sidebar.clone()),
) )
// Main .child(self.dock.clone()),
.child(
h_flex()
.size_full()
.child(
div()
.flex_shrink_0()
.h_full()
.w(SIDEBAR_WIDTH)
.child(self.sidebar.clone()),
)
.child(self.dock.clone()),
),
), ),
) )
// Notifications // Notifications
+2 -1
View File
@@ -5,7 +5,7 @@ use gpui::prelude::FluentBuilder;
use gpui::{ use gpui::{
AnyElement, App, AppContext, Context, Entity, EventEmitter, FocusHandle, Focusable, AnyElement, App, AppContext, Context, Entity, EventEmitter, FocusHandle, Focusable,
InteractiveElement, IntoElement, ParentElement, Render, SharedString, Styled, Subscription, InteractiveElement, IntoElement, ParentElement, Render, SharedString, Styled, Subscription,
Task, TextAlign, Window, div, rems, Task, TextAlign, Window, div, rems, retain_all,
}; };
use instant::Duration; use instant::Duration;
use nostr_sdk::prelude::*; use nostr_sdk::prelude::*;
@@ -297,6 +297,7 @@ impl Focusable for ContactListPanel {
impl Render for ContactListPanel { impl Render for ContactListPanel {
fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
v_flex() v_flex()
.image_cache(retain_all("contact-list-panel"))
.p_3() .p_3()
.gap_3() .gap_3()
.w_full() .w_full()
+2 -1
View File
@@ -4,7 +4,7 @@ use anyhow::Error;
use gpui::{ use gpui::{
AnyElement, App, AppContext, ClipboardItem, Context, Entity, EventEmitter, FocusHandle, AnyElement, App, AppContext, ClipboardItem, Context, Entity, EventEmitter, FocusHandle,
Focusable, IntoElement, ParentElement, PathPromptOptions, Render, SharedString, Styled, Task, Focusable, IntoElement, ParentElement, PathPromptOptions, Render, SharedString, Styled, Task,
Window, div, Window, div, retain_all,
}; };
use instant::Duration; use instant::Duration;
use nostr_sdk::prelude::*; use nostr_sdk::prelude::*;
@@ -321,6 +321,7 @@ impl Render for ProfilePanel {
let shorten_pkey = SharedString::from(shorten_pubkey(self.public_key, 8)); let shorten_pkey = SharedString::from(shorten_pubkey(self.public_key, 8));
v_flex() v_flex()
.image_cache(retain_all("profile-panel"))
.p_3() .p_3()
.gap_3() .gap_3()
.w_full() .w_full()