diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-02-14 08:47:26 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-02-14 09:03:20 +0300 |
| commit | 7816f20e6a3ddc4057aa1ab35742dc7f67453bc2 (patch) | |
| tree | 3803a6ff8fe12d937f7cfbc32e5adaaf5627ad6f /src | |
| parent | 0d3610416cb030e81251c4accf84353acf2059f0 (diff) | |
| download | niri-7816f20e6a3ddc4057aa1ab35742dc7f67453bc2.tar.gz niri-7816f20e6a3ddc4057aa1ab35742dc7f67453bc2.tar.bz2 niri-7816f20e6a3ddc4057aa1ab35742dc7f67453bc2.zip | |
Implement ext-data-control
Diffstat (limited to 'src')
| -rw-r--r-- | src/handlers/mod.rs | 25 | ||||
| -rw-r--r-- | src/niri.rs | 8 |
2 files changed, 26 insertions, 7 deletions
diff --git a/src/handlers/mod.rs b/src/handlers/mod.rs index 98cb87ea..334ab762 100644 --- a/src/handlers/mod.rs +++ b/src/handlers/mod.rs @@ -47,6 +47,9 @@ use smithay::wayland::selection::data_device::{ set_data_device_focus, ClientDndGrabHandler, DataDeviceHandler, DataDeviceState, ServerDndGrabHandler, }; +use smithay::wayland::selection::ext_data_control::{ + DataControlHandler as ExtDataControlHandler, DataControlState as ExtDataControlState, +}; use smithay::wayland::selection::primary_selection::{ set_primary_focus, PrimarySelectionHandler, PrimarySelectionState, }; @@ -63,13 +66,13 @@ use smithay::wayland::xdg_activation::{ }; use smithay::{ delegate_cursor_shape, delegate_data_control, delegate_data_device, delegate_dmabuf, - delegate_drm_lease, delegate_fractional_scale, delegate_idle_inhibit, delegate_idle_notify, - delegate_input_method_manager, delegate_keyboard_shortcuts_inhibit, delegate_output, - delegate_pointer_constraints, delegate_pointer_gestures, delegate_presentation, - delegate_primary_selection, delegate_relative_pointer, delegate_seat, - delegate_security_context, delegate_session_lock, delegate_single_pixel_buffer, - delegate_tablet_manager, delegate_text_input_manager, delegate_viewporter, - delegate_virtual_keyboard_manager, delegate_xdg_activation, + delegate_drm_lease, delegate_ext_data_control, delegate_fractional_scale, + delegate_idle_inhibit, delegate_idle_notify, delegate_input_method_manager, + delegate_keyboard_shortcuts_inhibit, delegate_output, delegate_pointer_constraints, + delegate_pointer_gestures, delegate_presentation, delegate_primary_selection, + delegate_relative_pointer, delegate_seat, delegate_security_context, delegate_session_lock, + delegate_single_pixel_buffer, delegate_tablet_manager, delegate_text_input_manager, + delegate_viewporter, delegate_virtual_keyboard_manager, delegate_xdg_activation, }; pub use crate::handlers::xdg_shell::KdeDecorationsModeState; @@ -396,6 +399,14 @@ impl WlrDataControlHandler for State { delegate_data_control!(State); +impl ExtDataControlHandler for State { + fn data_control_state(&self) -> &ExtDataControlState { + &self.niri.ext_data_control_state + } +} + +delegate_ext_data_control!(State); + impl OutputHandler for State { fn output_bound(&mut self, output: Output, wl_output: WlOutput) { foreign_toplevel::on_output_bound(self, &output, &wl_output); diff --git a/src/niri.rs b/src/niri.rs index a1a400de..d0df938e 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -88,6 +88,7 @@ use smithay::wayland::presentation::PresentationState; use smithay::wayland::relative_pointer::RelativePointerManagerState; use smithay::wayland::security_context::SecurityContextState; use smithay::wayland::selection::data_device::{set_data_device_selection, DataDeviceState}; +use smithay::wayland::selection::ext_data_control::DataControlState as ExtDataControlState; use smithay::wayland::selection::primary_selection::PrimarySelectionState; use smithay::wayland::selection::wlr_data_control::DataControlState as WlrDataControlState; use smithay::wayland::session_lock::{LockSurface, SessionLockManagerState, SessionLocker}; @@ -272,6 +273,7 @@ pub struct Niri { pub data_device_state: DataDeviceState, pub primary_selection_state: PrimarySelectionState, pub wlr_data_control_state: WlrDataControlState, + pub ext_data_control_state: ExtDataControlState, pub popups: PopupManager, pub popup_grab: Option<PopupGrabState>, pub presentation_state: PresentationState, @@ -1887,6 +1889,11 @@ impl Niri { Some(&primary_selection_state), client_is_unrestricted, ); + let ext_data_control_state = ExtDataControlState::new::<State, _>( + &display_handle, + Some(&primary_selection_state), + client_is_unrestricted, + ); let presentation_state = PresentationState::new::<State>(&display_handle, Monotonic::ID as u32); let security_context_state = @@ -2101,6 +2108,7 @@ impl Niri { data_device_state, primary_selection_state, wlr_data_control_state, + ext_data_control_state, popups: PopupManager::default(), popup_grab: None, suppressed_keys: HashSet::new(), |
