notedeck

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

commit dc23f8fe1ec117676001903f04cb466f61ae7d85
parent 6e50e7ee5b5689625eeaff2d88756dba53a0994c
Author: kernelkind <kernelkind@gmail.com>
Date:   Sat,  4 Oct 2025 17:38:04 -0400

split popup correctly for repost & update egui-nav

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

Diffstat:
MCargo.lock | 2+-
MCargo.toml | 2+-
Mcrates/notedeck_columns/src/actionbar.rs | 15+++++++++++----
Mcrates/notedeck_columns/src/nav.rs | 15++++++++-------
Mcrates/notedeck_columns/src/route.rs | 6+++++-
5 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -1555,7 +1555,7 @@ dependencies = [ [[package]] name = "egui_nav" version = "0.2.0" -source = "git+https://github.com/kernelkind/egui-nav?rev=41e389c77dff7df548299028684cd2ffc32d7987#41e389c77dff7df548299028684cd2ffc32d7987" +source = "git+https://github.com/kernelkind/egui-nav?rev=8767df4bc8d12a90fbcee7493d9c9604fe30f1a2#8767df4bc8d12a90fbcee7493d9c9604fe30f1a2" dependencies = [ "bitflags 2.9.1", "egui", diff --git a/Cargo.toml b/Cargo.toml @@ -28,7 +28,7 @@ egui = { version = "0.31.1", features = ["serde"] } egui-wgpu = "0.31.1" egui_extras = { version = "0.31.1", features = ["all_loaders"] } egui-winit = { version = "0.31.1", features = ["android-game-activity", "clipboard"] } -egui_nav = { git = "https://github.com/kernelkind/egui-nav", rev = "41e389c77dff7df548299028684cd2ffc32d7987" } +egui_nav = { git = "https://github.com/kernelkind/egui-nav", rev = "8767df4bc8d12a90fbcee7493d9c9604fe30f1a2" } egui_tabs = { git = "https://github.com/damus-io/egui-tabs", rev = "6eb91740577b374a8a6658c09c9a4181299734d0" } #egui_virtual_list = "0.6.0" egui_virtual_list = { git = "https://github.com/jb55/hello_egui", rev = "a66b6794f5e707a2f4109633770e02b02fb722e1" } diff --git a/crates/notedeck_columns/src/actionbar.rs b/crates/notedeck_columns/src/actionbar.rs @@ -11,6 +11,7 @@ use crate::{ view_state::ViewState, }; +use egui_nav::Percent; use enostr::{NoteId, Pubkey, RelayPool}; use nostrdb::{Ndb, NoteKey, Transaction}; use notedeck::{ @@ -121,7 +122,10 @@ fn execute_note_action( } NoteAction::Repost(note_id) => { if can_post { - router_action = Some(RouterAction::route_to(Route::quote(note_id))); + router_action = Some(RouterAction::route_to_sheet( + Route::RepostDecision(note_id), + egui_nav::Split::AbsoluteFromBottom(224.0), + )); } else { router_action = Some(RouterAction::route_to(Route::accounts())); } @@ -143,7 +147,7 @@ fn execute_note_action( break 'a; }; - if let RouterType::Sheet = router_type { + if let RouterType::Sheet(_) = router_type { router_action = Some(RouterAction::GoBack); } @@ -158,7 +162,10 @@ fn execute_note_action( ZapAction::ClearError(target) => clear_zap_error(&sender, zaps, target), ZapAction::CustomizeAmount(target) => { let route = Route::CustomizeZapAmount(target.to_owned()); - router_action = Some(RouterAction::route_to_sheet(route)); + router_action = Some(RouterAction::route_to_sheet( + route, + egui_nav::Split::PercentFromTop(Percent::new(35).expect("35 <= 100")), + )); } } } @@ -212,7 +219,7 @@ pub fn execute_and_process_note_action( let sheet_router = &mut columns.column_mut(col).sheet_router; if sheet_router.route().is_some() { - RouterType::Sheet + RouterType::Sheet(sheet_router.split) } else { RouterType::Stack } diff --git a/crates/notedeck_columns/src/nav.rs b/crates/notedeck_columns/src/nav.rs @@ -34,7 +34,7 @@ use crate::{ use egui::scroll_area::ScrollAreaOutput; use egui_nav::{ - Nav, NavAction, NavResponse, NavUiType, Percent, PopupResponse, PopupSheet, RouteResponse, + Nav, NavAction, NavResponse, NavUiType, PopupResponse, PopupSheet, RouteResponse, Split, }; use enostr::ProfileState; use nostrdb::{Filter, Ndb, Transaction}; @@ -377,7 +377,7 @@ pub enum RouterAction { } pub enum RouterType { - Sheet, + Sheet(Split), Stack, } @@ -417,8 +417,8 @@ impl RouterAction { } RouterAction::RouteTo(route, router_type) => match router_type { - RouterType::Sheet => { - sheet_router.route_to(route); + RouterType::Sheet(percent) => { + sheet_router.route_to(route, percent); None } RouterType::Stack => { @@ -446,8 +446,8 @@ impl RouterAction { RouterAction::RouteTo(route, RouterType::Stack) } - pub fn route_to_sheet(route: Route) -> Self { - RouterAction::RouteTo(route, RouterType::Sheet) + pub fn route_to_sheet(route: Route, split: Split) -> Self { + RouterAction::RouteTo(route, RouterType::Sheet(split)) } } @@ -1062,6 +1062,7 @@ pub fn render_nav( .sheet_router .navigating; let returning = app.columns(ctx.accounts).column(col).sheet_router.returning; + let split = app.columns(ctx.accounts).column(col).sheet_router.split; let bg_route = app .columns(ctx.accounts) .column(col) @@ -1074,7 +1075,7 @@ pub fn render_nav( .id_source(egui::Id::new(("nav", col))) .navigating(navigating) .returning(returning) - .with_split_percent_from_top(Percent::new(35).expect("35 <= 100")) + .with_split(split) .show_mut(ui, |ui, typ, route| match typ { NavUiType::Title => NavTitle::new( ctx.ndb, diff --git a/crates/notedeck_columns/src/route.rs b/crates/notedeck_columns/src/route.rs @@ -1,3 +1,4 @@ +use egui_nav::Percent; use enostr::{NoteId, Pubkey}; use notedeck::{tr, Localization, NoteZapTargetOwned, RootNoteIdBuf, WalletType}; use std::ops::Range; @@ -646,12 +647,14 @@ pub struct SingletonRouter<R: Clone> { pub returning: bool, pub navigating: bool, pub after_action: Option<R>, + pub split: egui_nav::Split, } impl<R: Clone> SingletonRouter<R> { - pub fn route_to(&mut self, route: R) { + pub fn route_to(&mut self, route: R, split: egui_nav::Split) { self.navigating = true; self.route = Some(route); + self.split = split; } pub fn go_back(&mut self) { @@ -674,6 +677,7 @@ impl<R: Clone> Default for SingletonRouter<R> { returning: false, navigating: false, after_action: None, + split: egui_nav::Split::PercentFromTop(Percent::new(35).expect("35 <= 100")), } } }