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>
This commit is contained in:
William Casarin
2025-05-20 18:05:55 -07:00
parent e75eb5ffd5
commit ee85b754dd
3 changed files with 37 additions and 50 deletions

View File

@@ -42,7 +42,7 @@ impl<'a> Mention<'a> {
self 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( mention_ui(
self.ndb, self.ndb,
self.img_cache, 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)] #[allow(clippy::too_many_arguments)]
#[profiling::function] #[profiling::function]
fn mention_ui( fn mention_ui(
@@ -71,40 +65,38 @@ fn mention_ui(
ui: &mut egui::Ui, ui: &mut egui::Ui,
size: f32, size: f32,
selectable: bool, selectable: bool,
) -> egui::InnerResponse<Option<NoteAction>> { ) -> Option<NoteAction> {
let link_color = ui.visuals().hyperlink_color; 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!( let name: String = format!(
"@{}", "@{}",
get_display_name(profile.as_ref()).username_or_displayname() get_display_name(profile.as_ref()).username_or_displayname()
); );
let resp = ui.add( let resp = ui.add(
egui::Label::new(egui::RichText::new(name).color(link_color).size(size)) egui::Label::new(egui::RichText::new(name).color(link_color).size(size))
.sense(Sense::click()) .sense(Sense::click())
.selectable(selectable), .selectable(selectable),
); );
let note_action = if resp.clicked() { let note_action = if resp.clicked() {
show_pointer(ui); show_pointer(ui);
Some(NoteAction::Profile(Pubkey::new(*pk))) Some(NoteAction::Profile(Pubkey::new(*pk)))
} else if resp.hovered() { } else if resp.hovered() {
show_pointer(ui); show_pointer(ui);
None None
} else { } else {
None None
}; };
if let Some(rec) = profile.as_ref() { if let Some(rec) = profile.as_ref() {
resp.on_hover_ui_at_pointer(|ui| { resp.on_hover_ui_at_pointer(|ui| {
ui.set_max_width(300.0); ui.set_max_width(300.0);
ui.add(ProfilePreview::new(rec, img_cache)); ui.add(ProfilePreview::new(rec, img_cache));
}); });
} }
note_action note_action
})
} }

View File

@@ -158,8 +158,8 @@ pub fn render_note_contents(
txn, txn,
profile.pubkey(), profile.pubkey(),
) )
.show(ui) .show(ui);
.inner;
if act.is_some() { if act.is_some() {
note_action = act; note_action = act;
} }
@@ -172,8 +172,8 @@ pub fn render_note_contents(
txn, txn,
npub.pubkey(), npub.pubkey(),
) )
.show(ui) .show(ui);
.inner;
if act.is_some() { if act.is_some() {
note_action = act; note_action = act;
} }

View File

@@ -72,8 +72,7 @@ pub fn reply_desc(
) )
.size(size) .size(size)
.selectable(selectable) .selectable(selectable)
.show(ui) .show(ui);
.inner;
if action.is_some() { if action.is_some() {
note_action = action; note_action = action;
@@ -96,8 +95,7 @@ pub fn reply_desc(
) )
.size(size) .size(size)
.selectable(selectable) .selectable(selectable)
.show(ui) .show(ui);
.inner;
if action.is_some() { if action.is_some() {
note_action = action; note_action = action;
@@ -119,8 +117,7 @@ pub fn reply_desc(
) )
.size(size) .size(size)
.selectable(selectable) .selectable(selectable)
.show(ui) .show(ui);
.inner;
if action.is_some() { if action.is_some() {
note_action = action; note_action = action;
@@ -144,8 +141,7 @@ pub fn reply_desc(
) )
.size(size) .size(size)
.selectable(selectable) .selectable(selectable)
.show(ui) .show(ui);
.inner;
if action.is_some() { if action.is_some() {
note_action = action; note_action = action;
@@ -166,8 +162,7 @@ pub fn reply_desc(
) )
.size(size) .size(size)
.selectable(selectable) .selectable(selectable)
.show(ui) .show(ui);
.inner;
if action.is_some() { if action.is_some() {
note_action = action; note_action = action;