From ed64e26faf4b97221f0883bc1113f997acbadc50 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 29 Aug 2024 17:30:50 -0700 Subject: [PATCH] Add `xdg-foreign-unstable-v2` protocol --- src/state.rs | 4 ++++ src/wayland/handlers/mod.rs | 1 + src/wayland/handlers/xdg_foreign.rs | 12 ++++++++++++ 3 files changed, 17 insertions(+) create mode 100644 src/wayland/handlers/xdg_foreign.rs diff --git a/src/state.rs b/src/state.rs index 186f2971..a8572269 100644 --- a/src/state.rs +++ b/src/state.rs @@ -96,6 +96,7 @@ use smithay::{ viewporter::ViewporterState, virtual_keyboard::VirtualKeyboardManagerState, xdg_activation::XdgActivationState, + xdg_foreign::XdgForeignState, xwayland_keyboard_grab::XWaylandKeyboardGrabState, xwayland_shell::XWaylandShellState, }, @@ -220,6 +221,7 @@ pub struct Common { pub toplevel_info_state: ToplevelInfoState, pub toplevel_management_state: ToplevelManagementState, pub xdg_activation_state: XdgActivationState, + pub xdg_foreign_state: XdgForeignState, pub workspace_state: WorkspaceState, pub xwayland_state: Option, pub xwayland_shell_state: XWaylandShellState, @@ -543,6 +545,7 @@ impl State { ], ); let xdg_activation_state = XdgActivationState::new::(dh); + let xdg_foreign_state = XdgForeignState::new::(dh); let toplevel_info_state = ToplevelInfoState::new(dh, client_is_privileged); let toplevel_management_state = ToplevelManagementState::new::( dh, @@ -610,6 +613,7 @@ impl State { toplevel_info_state, toplevel_management_state, xdg_activation_state, + xdg_foreign_state, workspace_state, xwayland_state: None, xwayland_shell_state, diff --git a/src/wayland/handlers/mod.rs b/src/wayland/handlers/mod.rs index 3fc4f9e6..82415aa4 100644 --- a/src/wayland/handlers/mod.rs +++ b/src/wayland/handlers/mod.rs @@ -39,6 +39,7 @@ pub mod viewporter; pub mod virtual_keyboard; pub mod workspace; pub mod xdg_activation; +pub mod xdg_foreign; pub mod xdg_shell; pub mod xwayland_keyboard_grab; pub mod xwayland_shell; diff --git a/src/wayland/handlers/xdg_foreign.rs b/src/wayland/handlers/xdg_foreign.rs new file mode 100644 index 00000000..b77ecfdd --- /dev/null +++ b/src/wayland/handlers/xdg_foreign.rs @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-3.0-only + +use smithay::{delegate_xdg_foreign, wayland::xdg_foreign::{XdgForeignHandler, XdgForeignState}}; +use crate::state::State; + +impl XdgForeignHandler for State { + fn xdg_foreign_state(&mut self) -> &mut XdgForeignState { + &mut self.common.xdg_foreign_state + } +} + +delegate_xdg_foreign!(State);