mirror of
https://github.com/aljazceru/notedeck.git
synced 2025-12-21 18:24:21 +01:00
perf: a few micro optimizations
Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
@@ -56,7 +56,7 @@ pub fn hline_with_width(ui: &egui::Ui, range: egui::Rangef) {
|
|||||||
ui.painter().hline(range, resize_y, stroke);
|
ui.painter().hline(range, resize_y, stroke);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn secondary_label(ui: &mut egui::Ui, s: impl Into<String>) {
|
pub fn secondary_label(ui: &mut egui::Ui, s: impl Into<String>) -> egui::Response {
|
||||||
let color = ui.style().visuals.noninteractive().fg_stroke.color;
|
let color = ui.style().visuals.noninteractive().fg_stroke.color;
|
||||||
ui.add(Label::new(RichText::new(s).size(10.0).color(color)).selectable(false));
|
ui.add(Label::new(RichText::new(s).size(10.0).color(color)).selectable(false))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -206,6 +206,7 @@ fn render_undecorated_note_contents<'a>(
|
|||||||
match block.blocktype() {
|
match block.blocktype() {
|
||||||
BlockType::MentionBech32 => match block.as_mention().unwrap() {
|
BlockType::MentionBech32 => match block.as_mention().unwrap() {
|
||||||
Mention::Profile(profile) => {
|
Mention::Profile(profile) => {
|
||||||
|
profiling::scope!("profile-block");
|
||||||
let act = crate::Mention::new(
|
let act = crate::Mention::new(
|
||||||
note_context.ndb,
|
note_context.ndb,
|
||||||
note_context.img_cache,
|
note_context.img_cache,
|
||||||
@@ -220,6 +221,7 @@ fn render_undecorated_note_contents<'a>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
Mention::Pubkey(npub) => {
|
Mention::Pubkey(npub) => {
|
||||||
|
profiling::scope!("pubkey-block");
|
||||||
let act = crate::Mention::new(
|
let act = crate::Mention::new(
|
||||||
note_context.ndb,
|
note_context.ndb,
|
||||||
note_context.img_cache,
|
note_context.img_cache,
|
||||||
@@ -251,6 +253,7 @@ fn render_undecorated_note_contents<'a>(
|
|||||||
},
|
},
|
||||||
|
|
||||||
BlockType::Hashtag => {
|
BlockType::Hashtag => {
|
||||||
|
profiling::scope!("hashtag-block");
|
||||||
if block.as_str().trim().is_empty() {
|
if block.as_str().trim().is_empty() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -268,6 +271,7 @@ fn render_undecorated_note_contents<'a>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
BlockType::Url => {
|
BlockType::Url => {
|
||||||
|
profiling::scope!("url-block");
|
||||||
let mut found_supported = || -> bool {
|
let mut found_supported = || -> bool {
|
||||||
let url = block.as_str();
|
let url = block.as_str();
|
||||||
|
|
||||||
@@ -297,6 +301,7 @@ fn render_undecorated_note_contents<'a>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
BlockType::Text => {
|
BlockType::Text => {
|
||||||
|
profiling::scope!("text-block");
|
||||||
// truncate logic
|
// truncate logic
|
||||||
let mut truncate = false;
|
let mut truncate = false;
|
||||||
let block_str = if options.contains(NoteOptions::Truncate)
|
let block_str = if options.contains(NoteOptions::Truncate)
|
||||||
|
|||||||
@@ -240,7 +240,7 @@ impl<'a, 'd> NoteView<'a, 'd> {
|
|||||||
let (_id, rect) = ui.allocate_space(egui::vec2(50.0, 20.0));
|
let (_id, rect) = ui.allocate_space(egui::vec2(50.0, 20.0));
|
||||||
ui.allocate_rect(rect, Sense::hover());
|
ui.allocate_rect(rect, Sense::hover());
|
||||||
ui.put(rect, |ui: &mut egui::Ui| {
|
ui.put(rect, |ui: &mut egui::Ui| {
|
||||||
render_notetime(ui, self.note_context.i18n, self.note.created_at(), false).response
|
render_notetime(ui, self.note_context.i18n, self.note.created_at(), false)
|
||||||
});
|
});
|
||||||
let (_id, rect) = ui.allocate_space(egui::vec2(150.0, 20.0));
|
let (_id, rect) = ui.allocate_space(egui::vec2(150.0, 20.0));
|
||||||
ui.allocate_rect(rect, Sense::hover());
|
ui.allocate_rect(rect, Sense::hover());
|
||||||
@@ -398,7 +398,7 @@ impl<'a, 'd> NoteView<'a, 'd> {
|
|||||||
let response = ui
|
let response = ui
|
||||||
.add(Username::new(i18n, profile.as_ref().ok(), note.pubkey()).abbreviated(20));
|
.add(Username::new(i18n, profile.as_ref().ok(), note.pubkey()).abbreviated(20));
|
||||||
if !flags.contains(NoteOptions::FullCreatedDate) {
|
if !flags.contains(NoteOptions::FullCreatedDate) {
|
||||||
return render_notetime(ui, i18n, note.created_at(), true).response;
|
return render_notetime(ui, i18n, note.created_at(), true);
|
||||||
}
|
}
|
||||||
response
|
response
|
||||||
})
|
})
|
||||||
@@ -892,18 +892,18 @@ fn render_notetime(
|
|||||||
i18n: &mut Localization,
|
i18n: &mut Localization,
|
||||||
created_at: u64,
|
created_at: u64,
|
||||||
before: bool,
|
before: bool,
|
||||||
) -> egui::InnerResponse<()> {
|
) -> Response {
|
||||||
ui.horizontal(|ui| {
|
if before {
|
||||||
if before {
|
secondary_label(
|
||||||
secondary_label(ui, "⋅");
|
ui,
|
||||||
}
|
format!(" ⋅ {}", notedeck::time_ago_since(i18n, created_at)),
|
||||||
|
)
|
||||||
secondary_label(ui, notedeck::time_ago_since(i18n, created_at));
|
} else {
|
||||||
|
secondary_label(
|
||||||
if !before {
|
ui,
|
||||||
secondary_label(ui, "⋅");
|
format!("{} ⋅ ", notedeck::time_ago_since(i18n, created_at)),
|
||||||
}
|
)
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn reply_button(ui: &mut egui::Ui, i18n: &mut Localization, note_key: NoteKey) -> egui::Response {
|
fn reply_button(ui: &mut egui::Ui, i18n: &mut Localization, note_key: NoteKey) -> egui::Response {
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ fn render_text_segments(
|
|||||||
let link_color = visuals.hyperlink_color;
|
let link_color = visuals.hyperlink_color;
|
||||||
|
|
||||||
for segment in segments {
|
for segment in segments {
|
||||||
match segment {
|
match &segment {
|
||||||
TextSegment::Plain(text) => {
|
TextSegment::Plain(text) => {
|
||||||
ui.add(
|
ui.add(
|
||||||
Label::new(RichText::new(text).size(size).color(color)).selectable(selectable),
|
Label::new(RichText::new(text).size(size).color(color)).selectable(selectable),
|
||||||
|
|||||||
Reference in New Issue
Block a user