notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

commit ee85b754dd86bce33ebf6b7c00a4a599be1da7e5
parent e75eb5ffd547bd434d6f6ef23b3b226e80e6dbb5
Author: William Casarin <jb55@jb55.com>
Date:   Tue, 20 May 2025 18:05:55 -0700

Fix text wrapping issues

Mentions were getting wrapped in a horizontal, which breaks the outer
horizontal_wrapped in note contents. When this breaks, it seems to be
breaking subsequent wrapping in notes.

Remove the horizontal to the remaining text wrapping issues!

Changelog-Fixed: Fix text wrapping glitches
Fixes: https://github.com/damus-io/notedeck/issues/33
Signed-off-by: William Casarin <jb55@jb55.com>

Diffstat:
Mcrates/notedeck_ui/src/mention.rs | 64++++++++++++++++++++++++++++------------------------------------
Mcrates/notedeck_ui/src/note/contents.rs | 8++++----
Mcrates/notedeck_ui/src/note/reply_description.rs | 15+++++----------
3 files changed, 37 insertions(+), 50 deletions(-)

diff --git a/crates/notedeck_ui/src/mention.rs b/crates/notedeck_ui/src/mention.rs @@ -42,7 +42,7 @@ impl<'a> Mention<'a> { self } - pub fn show(self, ui: &mut egui::Ui) -> egui::InnerResponse<Option<NoteAction>> { + pub fn show(self, ui: &mut egui::Ui) -> Option<NoteAction> { mention_ui( self.ndb, self.img_cache, @@ -55,12 +55,6 @@ impl<'a> Mention<'a> { } } -impl egui::Widget for Mention<'_> { - fn ui(self, ui: &mut egui::Ui) -> egui::Response { - self.show(ui).response - } -} - #[allow(clippy::too_many_arguments)] #[profiling::function] fn mention_ui( @@ -71,40 +65,38 @@ fn mention_ui( ui: &mut egui::Ui, size: f32, selectable: bool, -) -> egui::InnerResponse<Option<NoteAction>> { +) -> Option<NoteAction> { let link_color = ui.visuals().hyperlink_color; - ui.horizontal(|ui| { - let profile = ndb.get_profile_by_pubkey(txn, pk).ok(); + let profile = ndb.get_profile_by_pubkey(txn, pk).ok(); - let name: String = format!( - "@{}", - get_display_name(profile.as_ref()).username_or_displayname() - ); + let name: String = format!( + "@{}", + get_display_name(profile.as_ref()).username_or_displayname() + ); - let resp = ui.add( - egui::Label::new(egui::RichText::new(name).color(link_color).size(size)) - .sense(Sense::click()) - .selectable(selectable), - ); + let resp = ui.add( + egui::Label::new(egui::RichText::new(name).color(link_color).size(size)) + .sense(Sense::click()) + .selectable(selectable), + ); - let note_action = if resp.clicked() { - show_pointer(ui); - Some(NoteAction::Profile(Pubkey::new(*pk))) - } else if resp.hovered() { - show_pointer(ui); - None - } else { - None - }; + let note_action = if resp.clicked() { + show_pointer(ui); + Some(NoteAction::Profile(Pubkey::new(*pk))) + } else if resp.hovered() { + show_pointer(ui); + None + } else { + None + }; - if let Some(rec) = profile.as_ref() { - resp.on_hover_ui_at_pointer(|ui| { - ui.set_max_width(300.0); - ui.add(ProfilePreview::new(rec, img_cache)); - }); - } + if let Some(rec) = profile.as_ref() { + resp.on_hover_ui_at_pointer(|ui| { + ui.set_max_width(300.0); + ui.add(ProfilePreview::new(rec, img_cache)); + }); + } - note_action - }) + note_action } diff --git a/crates/notedeck_ui/src/note/contents.rs b/crates/notedeck_ui/src/note/contents.rs @@ -158,8 +158,8 @@ pub fn render_note_contents( txn, profile.pubkey(), ) - .show(ui) - .inner; + .show(ui); + if act.is_some() { note_action = act; } @@ -172,8 +172,8 @@ pub fn render_note_contents( txn, npub.pubkey(), ) - .show(ui) - .inner; + .show(ui); + if act.is_some() { note_action = act; } diff --git a/crates/notedeck_ui/src/note/reply_description.rs b/crates/notedeck_ui/src/note/reply_description.rs @@ -72,8 +72,7 @@ pub fn reply_desc( ) .size(size) .selectable(selectable) - .show(ui) - .inner; + .show(ui); if action.is_some() { note_action = action; @@ -96,8 +95,7 @@ pub fn reply_desc( ) .size(size) .selectable(selectable) - .show(ui) - .inner; + .show(ui); if action.is_some() { note_action = action; @@ -119,8 +117,7 @@ pub fn reply_desc( ) .size(size) .selectable(selectable) - .show(ui) - .inner; + .show(ui); if action.is_some() { note_action = action; @@ -144,8 +141,7 @@ pub fn reply_desc( ) .size(size) .selectable(selectable) - .show(ui) - .inner; + .show(ui); if action.is_some() { note_action = action; @@ -166,8 +162,7 @@ pub fn reply_desc( ) .size(size) .selectable(selectable) - .show(ui) - .inner; + .show(ui); if action.is_some() { note_action = action;