From 0e09aae9f836351c900bdfa0ce7d91b876a67045 Mon Sep 17 00:00:00 2001 From: Nova Date: Sat, 24 Sep 2022 13:21:01 -0400 Subject: [PATCH] feat(wayland): xdg activation --- src/wayland/mod.rs | 1 + src/wayland/state.rs | 8 ++++++-- src/wayland/xdg_activation.rs | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 src/wayland/xdg_activation.rs diff --git a/src/wayland/mod.rs b/src/wayland/mod.rs index ed64df1..0428073 100644 --- a/src/wayland/mod.rs +++ b/src/wayland/mod.rs @@ -6,6 +6,7 @@ pub mod seat; pub mod shaders; pub mod state; pub mod surface; +pub mod xdg_activation; pub mod xdg_shell; use self::{panel_item::PanelItem, state::WaylandState, surface::CORE_SURFACES}; diff --git a/src/wayland/state.rs b/src/wayland/state.rs index 4471cc9..53be395 100644 --- a/src/wayland/state.rs +++ b/src/wayland/state.rs @@ -23,6 +23,7 @@ use smithay::{ xdg::{decoration::XdgDecorationState, XdgShellState}, }, shm::{ShmHandler, ShmState}, + xdg_activation::XdgActivationState, }, }; use std::sync::{Arc, Weak}; @@ -47,9 +48,10 @@ pub struct WaylandState { pub display_handle: DisplayHandle, pub compositor_state: CompositorState, - pub xdg_shell_state: XdgShellState, + pub xdg_activation_state: XdgActivationState, pub xdg_decoration_state: XdgDecorationState, pub kde_decoration_state: KdeDecorationState, + pub xdg_shell_state: XdgShellState, pub shm_state: ShmState, pub output_manager_state: OutputManagerState, pub output: Output, @@ -63,6 +65,7 @@ impl WaylandState { display_handle: DisplayHandle, ) -> Arc> { let compositor_state = CompositorState::new::(&display_handle, log.clone()); + let xdg_activation_state = XdgActivationState::new::(&display_handle, log.clone()); let xdg_shell_state = XdgShellState::new::(&display_handle, log.clone()); let xdg_decoration_state = XdgDecorationState::new::(&display_handle, log.clone()); let kde_decoration_state = @@ -92,9 +95,10 @@ impl WaylandState { display_handle, compositor_state, - xdg_shell_state, + xdg_activation_state, xdg_decoration_state, kde_decoration_state, + xdg_shell_state, shm_state, output_manager_state, output, diff --git a/src/wayland/xdg_activation.rs b/src/wayland/xdg_activation.rs new file mode 100644 index 0000000..83b3800 --- /dev/null +++ b/src/wayland/xdg_activation.rs @@ -0,0 +1,34 @@ +use smithay::{ + delegate_xdg_activation, + reexports::wayland_server::protocol::wl_surface::WlSurface, + wayland::xdg_activation::{XdgActivationHandler, XdgActivationToken, XdgActivationTokenData}, +}; + +use super::state::WaylandState; + +impl XdgActivationHandler for WaylandState { + fn activation_state(&mut self) -> &mut smithay::wayland::xdg_activation::XdgActivationState { + &mut self.xdg_activation_state + } + + fn request_activation( + &mut self, + token: XdgActivationToken, + token_data: XdgActivationTokenData, + _surface: WlSurface, + ) { + dbg!(token); + dbg!(token_data); + } + + fn destroy_activation( + &mut self, + token: XdgActivationToken, + token_data: XdgActivationTokenData, + _surface: WlSurface, + ) { + dbg!(token); + dbg!(token_data); + } +} +delegate_xdg_activation!(WaylandState);