notedeck

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

commit c4eccf0a8ea5ee750894afeb866cd3ebc9000058
parent d81243f05538efcf42d307f14f336275fdc2bb69
Author: kernelkind <kernelkind@gmail.com>
Date:   Sun, 28 Sep 2025 20:04:53 -0400

TMP: new egui-nav

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

Diffstat:
MCargo.lock | 3++-
MCargo.toml | 2+-
Mcrates/notedeck_columns/src/nav.rs | 40++++++++++++++++++++++++++--------------
3 files changed, 29 insertions(+), 16 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -1555,8 +1555,9 @@ dependencies = [ [[package]] name = "egui_nav" version = "0.2.0" -source = "git+https://github.com/damus-io/egui-nav?rev=e4231c19dda9e6791d2f7b5cd610b8db5ff9a7f9#e4231c19dda9e6791d2f7b5cd610b8db5ff9a7f9" +source = "git+https://github.com/kernelkind/egui-nav?rev=41e389c77dff7df548299028684cd2ffc32d7987#41e389c77dff7df548299028684cd2ffc32d7987" dependencies = [ + "bitflags 2.9.1", "egui", "egui_extras", ] 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/damus-io/egui-nav", rev = "e4231c19dda9e6791d2f7b5cd610b8db5ff9a7f9" } +egui_nav = { git = "https://github.com/kernelkind/egui-nav", rev = "41e389c77dff7df548299028684cd2ffc32d7987" } 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/nav.rs b/crates/notedeck_columns/src/nav.rs @@ -34,7 +34,9 @@ use crate::{ }; use egui::scroll_area::ScrollAreaOutput; -use egui_nav::{Nav, NavAction, NavResponse, NavUiType, Percent, PopupResponse, PopupSheet}; +use egui_nav::{ + Nav, NavAction, NavResponse, NavUiType, Percent, PopupResponse, PopupSheet, RouteResponse, +}; use enostr::ProfileState; use nostrdb::{Filter, Ndb, Transaction}; use notedeck::{ @@ -1126,25 +1128,35 @@ pub fn render_nav( .returning, ) .show_mut(ui, |ui, render_type, nav| match render_type { - NavUiType::Title => NavTitle::new( - ctx.ndb, - ctx.img_cache, - get_active_columns_mut(ctx.i18n, ctx.accounts, &mut app.decks_cache), - nav.routes(), - col, - ctx.i18n, - ) - .show_move_button(!narrow) - .show_delete_button(!narrow) - .show(ui), + NavUiType::Title => { + let action = NavTitle::new( + ctx.ndb, + ctx.img_cache, + get_active_columns_mut(ctx.i18n, ctx.accounts, &mut app.decks_cache), + nav.routes(), + col, + ctx.i18n, + ) + .show_move_button(!narrow) + .show_delete_button(!narrow) + .show(ui); + RouteResponse { + response: action, + can_take_drag_from: Vec::new(), + } + } NavUiType::Body => { - if let Some(top) = nav.routes().last() { + let resp = if let Some(top) = nav.routes().last() { render_nav_body(ui, app, ctx, top, nav.routes().len(), col, inner_rect) } else { BodyResponse::none() + }; + + RouteResponse { + response: resp.output, + can_take_drag_from: resp.drag_id.map(|d| vec![d]).unwrap_or(Vec::new()), } - .output } });