diff --git a/src/app.rs b/src/app.rs index 2d48a83..345b65c 100644 --- a/src/app.rs +++ b/src/app.rs @@ -867,16 +867,16 @@ fn timelines_view(ui: &mut egui::Ui, sizes: Size, app: &mut Damus, timelines: us .clip(true) .horizontal(|mut strip| { strip.cell(|ui| { - if DesktopSidePanel::new( + let side_panel = DesktopSidePanel::new( app.account_manager .get_selected_account() .map(|a| a.pubkey.bytes()), SimpleProfilePreviewController::new(&app.ndb, &mut app.img_cache), ) - .show(ui) - .clicked() - { - // clicked pfp + .show(ui); + + if side_panel.response.clicked() { + info!("clicked {:?}", side_panel.action); } }); diff --git a/src/ui/side_panel.rs b/src/ui/side_panel.rs index 068f713..0284de7 100644 --- a/src/ui/side_panel.rs +++ b/src/ui/side_panel.rs @@ -9,9 +9,28 @@ pub struct DesktopSidePanel<'a> { simple_preview_controller: SimpleProfilePreviewController<'a>, } +#[derive(Debug, Eq, PartialEq, Clone, Copy)] +pub enum SidePanelAction { + Panel, + Account, + Settings, + Columns, +} + +pub struct SidePanelResponse { + pub response: egui::Response, + pub action: SidePanelAction, +} + +impl SidePanelResponse { + fn new(action: SidePanelAction, response: egui::Response) -> Self { + SidePanelResponse { action, response } + } +} + impl<'a> Widget for DesktopSidePanel<'a> { fn ui(self, ui: &mut egui::Ui) -> egui::Response { - self.show(ui) + self.show(ui).response } } @@ -32,7 +51,7 @@ impl<'a> DesktopSidePanel<'a> { .exact_width(40.0) } - pub fn show(self, ui: &mut egui::Ui) -> egui::Response { + pub fn show(self, ui: &mut egui::Ui) -> SidePanelResponse { let dark_mode = ui.ctx().style().visuals.dark_mode; let spacing_amt = 16.0;