diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-03-08 17:08:58 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-03-08 17:08:58 +0400 |
| commit | 03fe864d07d0ede40d87231286b67c70aeb37f9f (patch) | |
| tree | fff61fe8b19cf4f23b99039f73c31c97b36f2bb7 /src | |
| parent | e45dbb8ef67618bfbdb318eccb39fe06ad20dd00 (diff) | |
| download | niri-03fe864d07d0ede40d87231286b67c70aeb37f9f.tar.gz niri-03fe864d07d0ede40d87231286b67c70aeb37f9f.tar.bz2 niri-03fe864d07d0ede40d87231286b67c70aeb37f9f.zip | |
Add xdg-foreign
Diffstat (limited to 'src')
| -rw-r--r-- | src/handlers/xdg_shell.rs | 13 | ||||
| -rw-r--r-- | src/niri.rs | 4 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/handlers/xdg_shell.rs b/src/handlers/xdg_shell.rs index 78b38be3..7302c2ac 100644 --- a/src/handlers/xdg_shell.rs +++ b/src/handlers/xdg_shell.rs @@ -22,7 +22,10 @@ use smithay::wayland::shell::xdg::{ PopupSurface, PositionerState, ToplevelSurface, XdgPopupSurfaceData, XdgShellHandler, XdgShellState, XdgToplevelSurfaceData, XdgToplevelSurfaceRoleAttributes, }; -use smithay::{delegate_kde_decoration, delegate_xdg_decoration, delegate_xdg_shell}; +use smithay::wayland::xdg_foreign::{XdgForeignHandler, XdgForeignState}; +use smithay::{ + delegate_kde_decoration, delegate_xdg_decoration, delegate_xdg_foreign, delegate_xdg_shell, +}; use crate::layout::workspace::ColumnWidth; use crate::niri::{PopupGrabState, State}; @@ -526,9 +529,15 @@ impl KdeDecorationHandler for State { &self.niri.kde_decoration_state } } - delegate_kde_decoration!(State); +impl XdgForeignHandler for State { + fn xdg_foreign_state(&mut self) -> &mut XdgForeignState { + &mut self.niri.xdg_foreign_state + } +} +delegate_xdg_foreign!(State); + fn initial_configure_sent(toplevel: &ToplevelSurface) -> bool { with_states(toplevel.wl_surface(), |states| { states diff --git a/src/niri.rs b/src/niri.rs index d790edfa..4bd5dd50 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -86,6 +86,7 @@ use smithay::wayland::tablet_manager::{TabletManagerState, TabletSeatTrait}; use smithay::wayland::text_input::TextInputManagerState; use smithay::wayland::viewporter::ViewporterState; use smithay::wayland::virtual_keyboard::VirtualKeyboardManagerState; +use smithay::wayland::xdg_foreign::XdgForeignState; use crate::backend::tty::SurfaceDmabufFeedback; use crate::backend::{Backend, RenderResult, Tty, Winit}; @@ -160,6 +161,7 @@ pub struct Niri { pub foreign_toplevel_state: ForeignToplevelManagerState, pub screencopy_state: ScreencopyManagerState, pub viewporter_state: ViewporterState, + pub xdg_foreign_state: XdgForeignState, pub shm_state: ShmState, pub output_manager_state: OutputManagerState, pub dmabuf_state: DmabufState, @@ -920,6 +922,7 @@ impl Niri { !client.get_data::<ClientState>().unwrap().restricted }); let viewporter_state = ViewporterState::new::<State>(&display_handle); + let xdg_foreign_state = XdgForeignState::new::<State>(&display_handle); let mut seat: Seat<State> = seat_state.new_wl_seat(&display_handle, backend.seat_name()); seat.add_keyboard( @@ -1042,6 +1045,7 @@ impl Niri { foreign_toplevel_state, screencopy_state, viewporter_state, + xdg_foreign_state, text_input_state, input_method_state, virtual_keyboard_state, |
