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:
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")),
}
}
}