split popup correctly for repost & update egui-nav

Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
kernelkind
2025-10-04 17:38:04 -04:00
parent 6e50e7ee5b
commit dc23f8fe1e
5 changed files with 26 additions and 14 deletions

2
Cargo.lock generated
View File

@@ -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",

View File

@@ -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" }

View File

@@ -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
}

View File

@@ -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,

View File

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