notedeck

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

commit 3d70a275ba9fd5c437e3196e3afe148c5310ff9a
parent 95e0f9b095ca78c2ef90b75513c7ddef73e2be90
Author: William Casarin <jb55@jb55.com>
Date:   Mon,  5 Jan 2026 14:24:57 -0800

nip51: route card clicks to checkbox

reserve pfp clicks to user nav

Signed-off-by: William Casarin <jb55@jb55.com>

Diffstat:
Mcrates/notedeck_ui/src/nip51_set.rs | 28+++++++++++++++++-----------
1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/crates/notedeck_ui/src/nip51_set.rs b/crates/notedeck_ui/src/nip51_set.rs @@ -261,7 +261,7 @@ fn render_pack( crate::hline(ui); - if render_profile_item(ui, images, jobs, m_profile.as_ref(), cur_state) { + if render_profile_item(ui, images, jobs, m_profile.as_ref(), cur_state).clicked() { action = Some(Nip51SetWidgetAction::ViewProfile(*pk)); } } @@ -282,7 +282,7 @@ fn render_profile_item( jobs: &MediaJobSender, profile: Option<&ProfileRecord>, checked: &mut bool, -) -> bool { +) -> egui::Response { let (card_rect, card_resp) = ui.allocate_exact_size(vec2(ui.available_width(), PFP_SIZE), egui::Sense::click()); @@ -309,15 +309,16 @@ fn render_profile_item( let (pfp_rect, body_rect) = remaining_rect.split_left_right_at_x(remaining_rect.left() + PFP_SIZE); - let _ = ui.allocate_new_ui(UiBuilder::new().max_rect(pfp_rect), |ui| { - let pfp_resp = ui.add( - &mut ProfilePic::new(images, jobs, get_profile_url(profile)) - .sense(Sense::click()) - .size(PFP_SIZE), - ); + let pfp_response = ui + .allocate_new_ui(UiBuilder::new().max_rect(pfp_rect), |ui| { + ui.add( + &mut ProfilePic::new(images, jobs, get_profile_url(profile)) + .sense(Sense::click()) + .size(PFP_SIZE), + ) + }) + .inner; - clicked_response = clicked_response.union(pfp_resp); - }); ui.advance_cursor_after_rect(pfp_rect); let (_, body_rect) = body_rect.split_left_right_at_x(body_rect.left() + 8.0); @@ -364,6 +365,7 @@ fn render_profile_item( } }); ui.advance_cursor_after_rect(name_rect); + clicked_response = clicked_response.union(resp.response); let resp = ui.allocate_new_ui(UiBuilder::new().max_rect(description_rect), |ui| 's: { @@ -394,7 +396,11 @@ fn render_profile_item( clicked_response = clicked_response.union(resp.response); - clicked_response.clicked() + if clicked_response.clicked() { + *checked = !*checked; + } + + pfp_response } #[derive(Default)]