notedeck

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

commit c1c4c1cc7a2d53ddfec8d9f7214b52a9fbde94b0
parent 8c49e6e5f60dab531301d6c493996e1337941246
Author: kernelkind <kernelkind@gmail.com>
Date:   Sun,  2 Feb 2025 16:52:10 -0500

supply inner_rect for PostView

Signed-off-by: kernelkind <kernelkind@gmail.com>

Diffstat:
Mcrates/notedeck_columns/src/app.rs | 18+++++++++++-------
Mcrates/notedeck_columns/src/nav.rs | 7++++++-
Mcrates/notedeck_columns/src/ui/note/post.rs | 4++++
Mcrates/notedeck_columns/src/ui/note/quote_repost.rs | 4++++
Mcrates/notedeck_columns/src/ui/note/reply.rs | 4++++
5 files changed, 29 insertions(+), 8 deletions(-)

diff --git a/crates/notedeck_columns/src/app.rs b/crates/notedeck_columns/src/app.rs @@ -500,7 +500,8 @@ fn render_damus_mobile(app: &mut Damus, app_ctx: &mut AppContext<'_>, ui: &mut e //let routes = app.timelines[0].routes.clone(); if !app.columns(app_ctx.accounts).columns().is_empty() - && nav::render_nav(0, app, app_ctx, ui).process_render_nav_response(app, app_ctx) + && nav::render_nav(0, ui.available_rect_before_wrap(), app, app_ctx, ui) + .process_render_nav_response(app, app_ctx) && !app.tmp_columns { storage::save_decks_cache(app_ctx.path, &app.decks_cache); @@ -584,14 +585,17 @@ fn timelines_view(ui: &mut egui::Ui, sizes: Size, app: &mut Damus, ctx: &mut App for col_index in 0..num_cols { strip.cell(|ui| { let rect = ui.available_rect_before_wrap(); - responses.push(nav::render_nav(col_index, app, ctx, ui)); + let v_line_stroke = ui.visuals().widgets.noninteractive.bg_stroke; + let inner_rect = { + let mut inner = rect; + inner.set_right(rect.right() - v_line_stroke.width); + inner + }; + responses.push(nav::render_nav(col_index, inner_rect, app, ctx, ui)); // vertical line - ui.painter().vline( - rect.right(), - rect.y_range(), - ui.visuals().widgets.noninteractive.bg_stroke, - ); + ui.painter() + .vline(rect.right(), rect.y_range(), v_line_stroke); }); //strip.cell(|ui| timeline::timeline_view(ui, app, timeline_ind)); diff --git a/crates/notedeck_columns/src/nav.rs b/crates/notedeck_columns/src/nav.rs @@ -241,6 +241,7 @@ fn render_nav_body( top: &Route, depth: usize, col: usize, + inner_rect: egui::Rect, ) -> Option<RenderNavAction> { match top { Route::Timeline(kind) => render_timeline_route( @@ -308,6 +309,7 @@ fn render_nav_body( ctx.note_cache, ctx.img_cache, &note, + inner_rect, ) .id_source(id) .show(ui) @@ -342,6 +344,7 @@ fn render_nav_body( ctx.img_cache, draft, &note, + inner_rect, ) .id_source(id) .show(ui) @@ -362,6 +365,7 @@ fn render_nav_body( ctx.img_cache, ctx.note_cache, kp, + inner_rect, ) .ui(&txn, ui); @@ -473,6 +477,7 @@ fn render_nav_body( #[must_use = "RenderNavResponse must be handled by calling .process_render_nav_response(..)"] pub fn render_nav( col: usize, + inner_rect: egui::Rect, app: &mut Damus, ctx: &mut AppContext<'_>, ui: &mut egui::Ui, @@ -508,7 +513,7 @@ pub fn render_nav( .show(ui), NavUiType::Body => { if let Some(top) = nav.routes().last() { - render_nav_body(ui, app, ctx, top, nav.routes().len(), col) + render_nav_body(ui, app, ctx, top, nav.routes().len(), col, inner_rect) } else { None } diff --git a/crates/notedeck_columns/src/ui/note/post.rs b/crates/notedeck_columns/src/ui/note/post.rs @@ -22,6 +22,7 @@ pub struct PostView<'a> { note_cache: &'a mut NoteCache, poster: FilledKeypair<'a>, id_source: Option<egui::Id>, + inner_rect: egui::Rect, } #[derive(Clone)] @@ -84,6 +85,7 @@ impl<'a> PostView<'a> { img_cache: &'a mut ImageCache, note_cache: &'a mut NoteCache, poster: FilledKeypair<'a>, + inner_rect: egui::Rect, ) -> Self { let id_source: Option<egui::Id> = None; PostView { @@ -94,6 +96,7 @@ impl<'a> PostView<'a> { poster, id_source, post_type, + inner_rect, } } @@ -535,6 +538,7 @@ mod preview { app.img_cache, app.note_cache, self.poster.to_filled(), + ui.available_rect_before_wrap(), ) .ui(&txn, ui); } diff --git a/crates/notedeck_columns/src/ui/note/quote_repost.rs b/crates/notedeck_columns/src/ui/note/quote_repost.rs @@ -14,6 +14,7 @@ pub struct QuoteRepostView<'a> { draft: &'a mut Draft, quoting_note: &'a nostrdb::Note<'a>, id_source: Option<egui::Id>, + inner_rect: egui::Rect, } impl<'a> QuoteRepostView<'a> { @@ -24,6 +25,7 @@ impl<'a> QuoteRepostView<'a> { img_cache: &'a mut ImageCache, draft: &'a mut Draft, quoting_note: &'a nostrdb::Note<'a>, + inner_rect: egui::Rect, ) -> Self { let id_source: Option<egui::Id> = None; QuoteRepostView { @@ -34,6 +36,7 @@ impl<'a> QuoteRepostView<'a> { draft, quoting_note, id_source, + inner_rect, } } @@ -48,6 +51,7 @@ impl<'a> QuoteRepostView<'a> { self.img_cache, self.note_cache, self.poster, + self.inner_rect, ) .id_source(id) .ui(self.quoting_note.txn().unwrap(), ui) diff --git a/crates/notedeck_columns/src/ui/note/reply.rs b/crates/notedeck_columns/src/ui/note/reply.rs @@ -14,6 +14,7 @@ pub struct PostReplyView<'a> { draft: &'a mut Draft, note: &'a nostrdb::Note<'a>, id_source: Option<egui::Id>, + inner_rect: egui::Rect, } impl<'a> PostReplyView<'a> { @@ -24,6 +25,7 @@ impl<'a> PostReplyView<'a> { note_cache: &'a mut NoteCache, img_cache: &'a mut ImageCache, note: &'a nostrdb::Note<'a>, + inner_rect: egui::Rect, ) -> Self { let id_source: Option<egui::Id> = None; PostReplyView { @@ -34,6 +36,7 @@ impl<'a> PostReplyView<'a> { note_cache, img_cache, id_source, + inner_rect, } } @@ -83,6 +86,7 @@ impl<'a> PostReplyView<'a> { self.img_cache, self.note_cache, self.poster, + self.inner_rect, ) .id_source(id) .ui(self.note.txn().unwrap(), ui)