mirror of
https://github.com/aljazceru/notedeck.git
synced 2026-02-23 01:14:20 +01:00
split popup correctly for repost & update egui-nav
Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -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",
|
||||
|
||||
@@ -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" }
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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")),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user