mod compositor; mod xdg_shell; use crate::Smallvil; // // Wl Seat // use smithay::input::{Seat, SeatHandler, SeatState}; use smithay::reexports::wayland_server::protocol::wl_surface::WlSurface; use smithay::reexports::wayland_server::Resource; use smithay::wayland::output::OutputHandler; use smithay::wayland::selection::data_device::{ set_data_device_focus, ClientDndGrabHandler, DataDeviceHandler, DataDeviceState, ServerDndGrabHandler, }; use smithay::wayland::selection::SelectionHandler; use smithay::{delegate_data_device, delegate_output, delegate_seat}; impl SeatHandler for Smallvil { type KeyboardFocus = WlSurface; type PointerFocus = WlSurface; type TouchFocus = WlSurface; fn seat_state(&mut self) -> &mut SeatState { &mut self.seat_state } fn cursor_image(&mut self, _seat: &Seat, _image: smithay::input::pointer::CursorImageStatus) {} fn focus_changed(&mut self, seat: &Seat, focused: Option<&WlSurface>) { let dh = &self.display_handle; let client = focused.and_then(|s| dh.get_client(s.id()).ok()); set_data_device_focus(dh, seat, client); } } delegate_seat!(Smallvil); // // Wl Data Device // impl SelectionHandler for Smallvil { type SelectionUserData = (); } impl DataDeviceHandler for Smallvil { fn data_device_state(&self) -> &DataDeviceState { &self.data_device_state } } impl ClientDndGrabHandler for Smallvil {} impl ServerDndGrabHandler for Smallvil {} delegate_data_device!(Smallvil); // // Wl Output & Xdg Output // impl OutputHandler for Smallvil {} delegate_output!(Smallvil);