mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-21 02:01:55 +07:00
Implement ext-data-control
This commit is contained in:
+18
-7
@@ -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);
|
||||
|
||||
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user