fix: context drawers on the search view

This commit is contained in:
Michael Aaron Murphy 2024-10-29 13:51:48 +01:00
parent 8af34ba9c4
commit 0dbc1e9bec
No known key found for this signature in database
GPG key ID: B2732D4240C9212C
33 changed files with 209 additions and 57 deletions

View file

@ -102,13 +102,15 @@ impl<Message: 'static> Binder<Message> {
P::sub_pages(crate::Insert { id, model: self })
}
pub fn register_page<P: Page<Message>>(&mut self, page: P) -> crate::Entity {
pub fn register_page<P: Page<Message>>(&mut self, mut page: P) -> crate::Entity {
let id = self.info.insert(page.info());
if let Some(content) = page.content(&mut self.sections) {
self.content.insert(id, content);
}
page.set_id(id);
self.page.insert(id, Box::new(page));
id
@ -172,7 +174,7 @@ impl<Message: 'static> Binder<Message> {
sender: tokio::sync::mpsc::Sender<Message>,
) -> Task<Message> {
if let Some(page) = self.page.get_mut(id) {
return page.on_enter(id, sender);
return page.on_enter(sender);
}
Task::none()

View file

@ -65,11 +65,7 @@ pub trait Page<Message: 'static>: Downcast {
/// Reload page metadata via a Task.
#[allow(unused)]
fn on_enter(
&mut self,
page: crate::Entity,
sender: tokio::sync::mpsc::Sender<Message>,
) -> Task<Message> {
fn on_enter(&mut self, sender: tokio::sync::mpsc::Sender<Message>) -> Task<Message> {
Task::none()
}
@ -78,6 +74,9 @@ pub trait Page<Message: 'static>: Downcast {
Task::none()
}
/// Assigns the entity ID of the page to the page.
fn set_id(&mut self, entity: Entity) {}
/// The title to display in the page header.
fn title(&self) -> Option<&str> {
None