commit 0fc8e70180a334fd62745380c0431a114678b027
parent 2de6851fbd27f932a3b1a0d7abd90b4c29c67078
Author: William Casarin <jb55@jb55.com>
Date: Tue, 29 Jul 2025 13:58:17 -0700
ui/note: fix indented actionbar in non-wide mode
Signed-off-by: William Casarin <jb55@jb55.com>
Diffstat:
1 file changed, 85 insertions(+), 82 deletions(-)
diff --git a/crates/notedeck_ui/src/note/mod.rs b/crates/notedeck_ui/src/note/mod.rs
@@ -454,20 +454,28 @@ impl<'a, 'd> NoteView<'a, 'd> {
note_action = contents.action.or(note_action);
if self.options().contains(NoteOptions::ActionBar) {
- note_action = render_note_actionbar(
- ui,
- get_zapper(
- self.note_context.accounts,
- self.note_context.global_wallet,
- self.note_context.zaps,
- ),
- self.note.id(),
- self.note.pubkey(),
- note_key,
- self.note_context.i18n,
- )
- .inner
- .or(note_action);
+ note_action = ui
+ .horizontal_wrapped(|ui| {
+ // NOTE(jb55): without this we get a weird artifact where
+ // there subsequent lines start sinking leftward off the screen.
+ // question: WTF? question 2: WHY?
+ ui.allocate_space(egui::vec2(0.0, 0.0));
+
+ render_note_actionbar(
+ ui,
+ get_zapper(
+ self.note_context.accounts,
+ self.note_context.global_wallet,
+ self.note_context.zaps,
+ ),
+ self.note.id(),
+ self.note.pubkey(),
+ note_key,
+ self.note_context.i18n,
+ )
+ })
+ .inner
+ .or(note_action);
}
NoteUiResponse {
@@ -531,20 +539,23 @@ impl<'a, 'd> NoteView<'a, 'd> {
note_action = contents.action.or(note_action);
if self.options().contains(NoteOptions::ActionBar) {
- note_action = render_note_actionbar(
- ui,
- get_zapper(
- self.note_context.accounts,
- self.note_context.global_wallet,
- self.note_context.zaps,
- ),
- self.note.id(),
- self.note.pubkey(),
- note_key,
- self.note_context.i18n,
- )
- .inner
- .or(note_action);
+ note_action = ui
+ .horizontal_wrapped(|ui| {
+ render_note_actionbar(
+ ui,
+ get_zapper(
+ self.note_context.accounts,
+ self.note_context.global_wallet,
+ self.note_context.zaps,
+ ),
+ self.note.id(),
+ self.note.pubkey(),
+ note_key,
+ self.note_context.i18n,
+ )
+ })
+ .inner
+ .or(note_action);
}
NoteUiResponse {
@@ -781,76 +792,68 @@ fn render_note_actionbar(
note_pubkey: &[u8; 32],
note_key: NoteKey,
i18n: &mut Localization,
-) -> egui::InnerResponse<Option<NoteAction>> {
- ui.horizontal(|ui| {
- // NOTE(jb55): without this we get a weird artifact where
- // there subsequent lines start sinking leftward off the screen.
- // question: WTF? question 2: WHY?
- ui.allocate_space(egui::vec2(0.0, 0.0));
+) -> Option<NoteAction> {
+ ui.set_min_height(26.0);
+ ui.spacing_mut().item_spacing.x = 24.0;
- ui.set_min_height(26.0);
- ui.spacing_mut().item_spacing.x = 24.0;
+ let reply_resp =
+ reply_button(ui, i18n, note_key).on_hover_cursor(egui::CursorIcon::PointingHand);
- let reply_resp =
- reply_button(ui, i18n, note_key).on_hover_cursor(egui::CursorIcon::PointingHand);
+ let quote_resp =
+ quote_repost_button(ui, i18n, note_key).on_hover_cursor(egui::CursorIcon::PointingHand);
- let quote_resp =
- quote_repost_button(ui, i18n, note_key).on_hover_cursor(egui::CursorIcon::PointingHand);
-
- let to_noteid = |id: &[u8; 32]| NoteId::new(*id);
- if reply_resp.clicked() {
- return Some(NoteAction::Reply(to_noteid(note_id)));
- }
+ let to_noteid = |id: &[u8; 32]| NoteId::new(*id);
+ if reply_resp.clicked() {
+ return Some(NoteAction::Reply(to_noteid(note_id)));
+ }
- if quote_resp.clicked() {
- return Some(NoteAction::Quote(to_noteid(note_id)));
- }
+ if quote_resp.clicked() {
+ return Some(NoteAction::Quote(to_noteid(note_id)));
+ }
- let Zapper { zaps, cur_acc } = zapper?;
+ let Zapper { zaps, cur_acc } = zapper?;
- let zap_target = ZapTarget::Note(NoteZapTarget {
- note_id,
- zap_recipient: note_pubkey,
- });
+ let zap_target = ZapTarget::Note(NoteZapTarget {
+ note_id,
+ zap_recipient: note_pubkey,
+ });
- let zap_state = zaps.any_zap_state_for(cur_acc.pubkey.bytes(), zap_target);
+ let zap_state = zaps.any_zap_state_for(cur_acc.pubkey.bytes(), zap_target);
- let target = NoteZapTargetOwned {
- note_id: to_noteid(note_id),
- zap_recipient: Pubkey::new(*note_pubkey),
- };
+ let target = NoteZapTargetOwned {
+ note_id: to_noteid(note_id),
+ zap_recipient: Pubkey::new(*note_pubkey),
+ };
- if zap_state.is_err() {
- return Some(NoteAction::Zap(ZapAction::ClearError(target)));
- }
+ if zap_state.is_err() {
+ return Some(NoteAction::Zap(ZapAction::ClearError(target)));
+ }
- let zap_resp = {
- cur_acc.secret_key.as_ref()?;
+ let zap_resp = {
+ cur_acc.secret_key.as_ref()?;
- match zap_state {
- Ok(any_zap_state) => ui.add(zap_button(i18n, any_zap_state, note_id)),
- Err(err) => {
- let (rect, _) =
- ui.allocate_at_least(egui::vec2(10.0, 10.0), egui::Sense::click());
- ui.add(x_button(rect)).on_hover_text(err.to_string())
- }
+ match zap_state {
+ Ok(any_zap_state) => ui.add(zap_button(i18n, any_zap_state, note_id)),
+ Err(err) => {
+ let (rect, _) = ui.allocate_at_least(egui::vec2(10.0, 10.0), egui::Sense::click());
+ ui.add(x_button(rect)).on_hover_text(err.to_string())
}
}
- .on_hover_cursor(egui::CursorIcon::PointingHand);
+ }
+ .on_hover_cursor(egui::CursorIcon::PointingHand);
- if zap_resp.secondary_clicked() {
- return Some(NoteAction::Zap(ZapAction::CustomizeAmount(target)));
- }
+ if zap_resp.secondary_clicked() {
+ return Some(NoteAction::Zap(ZapAction::CustomizeAmount(target)));
+ }
- if !zap_resp.clicked() {
- return None;
- }
+ if !zap_resp.clicked() {
+ return None;
+ }
- Some(NoteAction::Zap(ZapAction::Send(ZapTargetAmount {
- target,
- specified_msats: None,
- })))
- })
+ Some(NoteAction::Zap(ZapAction::Send(ZapTargetAmount {
+ target,
+ specified_msats: None,
+ })))
}
#[profiling::function]