seat: add default impls for pointer owners
This commit is contained in:
parent
61e0db6e02
commit
1a73bbd075
1 changed files with 38 additions and 95 deletions
|
|
@ -200,13 +200,31 @@ trait PointerOwner {
|
||||||
source: Option<Rc<WlDataSource>>,
|
source: Option<Rc<WlDataSource>>,
|
||||||
icon: Option<Rc<WlSurface>>,
|
icon: Option<Rc<WlSurface>>,
|
||||||
serial: u32,
|
serial: u32,
|
||||||
) -> Result<(), WlSeatError>;
|
) -> Result<(), WlSeatError> {
|
||||||
fn cancel_dnd(&self, seat: &Rc<WlSeatGlobal>);
|
let _ = origin;
|
||||||
|
let _ = icon;
|
||||||
|
let _ = serial;
|
||||||
|
if let Some(src) = source {
|
||||||
|
src.send_cancelled(seat);
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
fn cancel_dnd(&self, seat: &Rc<WlSeatGlobal>) {
|
||||||
|
seat.dropped_dnd.borrow_mut().take();
|
||||||
|
}
|
||||||
fn revert_to_default(&self, seat: &Rc<WlSeatGlobal>);
|
fn revert_to_default(&self, seat: &Rc<WlSeatGlobal>);
|
||||||
fn dnd_target_removed(&self, seat: &Rc<WlSeatGlobal>);
|
fn dnd_target_removed(&self, seat: &Rc<WlSeatGlobal>) {
|
||||||
fn dnd_icon(&self) -> Option<Rc<WlSurface>>;
|
self.cancel_dnd(seat);
|
||||||
fn toplevel_drag(&self) -> Option<Rc<XdgToplevelDragV1>>;
|
}
|
||||||
fn remove_dnd_icon(&self);
|
fn dnd_icon(&self) -> Option<Rc<WlSurface>> {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
fn toplevel_drag(&self) -> Option<Rc<XdgToplevelDragV1>> {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
fn remove_dnd_icon(&self) {
|
||||||
|
// nothing
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct SimplePointerOwner<T> {
|
struct SimplePointerOwner<T> {
|
||||||
|
|
@ -338,24 +356,6 @@ impl<T: SimplePointerOwnerUsecase> PointerOwner for SimplePointerOwner<T> {
|
||||||
found_tree.clear();
|
found_tree.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn start_drag(
|
|
||||||
&self,
|
|
||||||
seat: &Rc<WlSeatGlobal>,
|
|
||||||
_origin: &Rc<WlSurface>,
|
|
||||||
source: Option<Rc<WlDataSource>>,
|
|
||||||
_icon: Option<Rc<WlSurface>>,
|
|
||||||
_serial: u32,
|
|
||||||
) -> Result<(), WlSeatError> {
|
|
||||||
if let Some(src) = source {
|
|
||||||
src.send_cancelled(seat);
|
|
||||||
}
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn cancel_dnd(&self, seat: &Rc<WlSeatGlobal>) {
|
|
||||||
seat.dropped_dnd.borrow_mut().take();
|
|
||||||
}
|
|
||||||
|
|
||||||
fn revert_to_default(&self, seat: &Rc<WlSeatGlobal>) {
|
fn revert_to_default(&self, seat: &Rc<WlSeatGlobal>) {
|
||||||
if !T::IS_DEFAULT {
|
if !T::IS_DEFAULT {
|
||||||
seat.pointer_owner.set_default_pointer_owner(seat);
|
seat.pointer_owner.set_default_pointer_owner(seat);
|
||||||
|
|
@ -363,22 +363,6 @@ impl<T: SimplePointerOwnerUsecase> PointerOwner for SimplePointerOwner<T> {
|
||||||
seat.state.damage();
|
seat.state.damage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn dnd_target_removed(&self, seat: &Rc<WlSeatGlobal>) {
|
|
||||||
self.cancel_dnd(seat);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn dnd_icon(&self) -> Option<Rc<WlSurface>> {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
|
|
||||||
fn toplevel_drag(&self) -> Option<Rc<XdgToplevelDragV1>> {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
|
|
||||||
fn remove_dnd_icon(&self) {
|
|
||||||
// nothing
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: SimplePointerOwnerUsecase> PointerOwner for SimpleGrabPointerOwner<T> {
|
impl<T: SimplePointerOwnerUsecase> PointerOwner for SimpleGrabPointerOwner<T> {
|
||||||
|
|
@ -429,30 +413,10 @@ impl<T: SimplePointerOwnerUsecase> PointerOwner for SimpleGrabPointerOwner<T> {
|
||||||
.start_drag(self, seat, origin, src, icon, serial)
|
.start_drag(self, seat, origin, src, icon, serial)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cancel_dnd(&self, seat: &Rc<WlSeatGlobal>) {
|
|
||||||
seat.dropped_dnd.borrow_mut().take();
|
|
||||||
}
|
|
||||||
|
|
||||||
fn revert_to_default(&self, seat: &Rc<WlSeatGlobal>) {
|
fn revert_to_default(&self, seat: &Rc<WlSeatGlobal>) {
|
||||||
self.node.node_seat_state().remove_pointer_grab(seat);
|
self.node.node_seat_state().remove_pointer_grab(seat);
|
||||||
seat.pointer_owner.set_default_pointer_owner(seat);
|
seat.pointer_owner.set_default_pointer_owner(seat);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn dnd_target_removed(&self, seat: &Rc<WlSeatGlobal>) {
|
|
||||||
self.cancel_dnd(seat)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn dnd_icon(&self) -> Option<Rc<WlSurface>> {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
|
|
||||||
fn toplevel_drag(&self) -> Option<Rc<XdgToplevelDragV1>> {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
|
|
||||||
fn remove_dnd_icon(&self) {
|
|
||||||
// nothing
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PointerOwner for DndPointerOwner {
|
impl PointerOwner for DndPointerOwner {
|
||||||
|
|
@ -530,20 +494,6 @@ impl PointerOwner for DndPointerOwner {
|
||||||
self.pos_y.set(y);
|
self.pos_y.set(y);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn start_drag(
|
|
||||||
&self,
|
|
||||||
seat: &Rc<WlSeatGlobal>,
|
|
||||||
_origin: &Rc<WlSurface>,
|
|
||||||
source: Option<Rc<WlDataSource>>,
|
|
||||||
_icon: Option<Rc<WlSurface>>,
|
|
||||||
_serial: u32,
|
|
||||||
) -> Result<(), WlSeatError> {
|
|
||||||
if let Some(src) = source {
|
|
||||||
src.send_cancelled(seat);
|
|
||||||
}
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn cancel_dnd(&self, seat: &Rc<WlSeatGlobal>) {
|
fn cancel_dnd(&self, seat: &Rc<WlSeatGlobal>) {
|
||||||
let target = self.target.get();
|
let target = self.target.get();
|
||||||
target.node_on_dnd_leave(&self.dnd);
|
target.node_on_dnd_leave(&self.dnd);
|
||||||
|
|
@ -605,11 +555,23 @@ trait SimplePointerOwnerUsecase: Sized + Clone + 'static {
|
||||||
src: Option<Rc<WlDataSource>>,
|
src: Option<Rc<WlDataSource>>,
|
||||||
icon: Option<Rc<WlSurface>>,
|
icon: Option<Rc<WlSurface>>,
|
||||||
serial: u32,
|
serial: u32,
|
||||||
) -> Result<(), WlSeatError>;
|
) -> Result<(), WlSeatError> {
|
||||||
|
let _ = grab;
|
||||||
|
let _ = origin;
|
||||||
|
let _ = icon;
|
||||||
|
let _ = serial;
|
||||||
|
if let Some(src) = src {
|
||||||
|
src.send_cancelled(seat);
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
fn release_grab(&self, seat: &Rc<WlSeatGlobal>);
|
fn release_grab(&self, seat: &Rc<WlSeatGlobal>);
|
||||||
|
|
||||||
fn node_focus(&self, seat: &Rc<WlSeatGlobal>, node: &Rc<dyn Node>);
|
fn node_focus(&self, seat: &Rc<WlSeatGlobal>, node: &Rc<dyn Node>) {
|
||||||
|
let _ = seat;
|
||||||
|
let _ = node;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl SimplePointerOwnerUsecase for DefaultPointerUsecase {
|
impl SimplePointerOwnerUsecase for DefaultPointerUsecase {
|
||||||
|
|
@ -691,10 +653,6 @@ impl SimplePointerOwnerUsecase for DefaultPointerUsecase {
|
||||||
fn release_grab(&self, seat: &Rc<WlSeatGlobal>) {
|
fn release_grab(&self, seat: &Rc<WlSeatGlobal>) {
|
||||||
seat.pointer_owner.set_default_pointer_owner(seat);
|
seat.pointer_owner.set_default_pointer_owner(seat);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn node_focus(&self, _seat: &Rc<WlSeatGlobal>, _node: &Rc<dyn Node>) {
|
|
||||||
// nothing
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
trait NodeSelectorUsecase: Sized + 'static {
|
trait NodeSelectorUsecase: Sized + 'static {
|
||||||
|
|
@ -725,21 +683,6 @@ impl<U: NodeSelectorUsecase + ?Sized> SimplePointerOwnerUsecase for Rc<U> {
|
||||||
<U as NodeSelectorUsecase>::default_button(self, spo, seat, button, pn)
|
<U as NodeSelectorUsecase>::default_button(self, spo, seat, button, pn)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn start_drag(
|
|
||||||
&self,
|
|
||||||
_grab: &SimpleGrabPointerOwner<Self>,
|
|
||||||
seat: &Rc<WlSeatGlobal>,
|
|
||||||
_origin: &Rc<WlSurface>,
|
|
||||||
src: Option<Rc<WlDataSource>>,
|
|
||||||
_icon: Option<Rc<WlSurface>>,
|
|
||||||
_serial: u32,
|
|
||||||
) -> Result<(), WlSeatError> {
|
|
||||||
if let Some(src) = src {
|
|
||||||
src.send_cancelled(seat);
|
|
||||||
}
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn release_grab(&self, seat: &Rc<WlSeatGlobal>) {
|
fn release_grab(&self, seat: &Rc<WlSeatGlobal>) {
|
||||||
seat.pointer_owner.owner.set(Rc::new(SimplePointerOwner {
|
seat.pointer_owner.owner.set(Rc::new(SimplePointerOwner {
|
||||||
usecase: self.clone(),
|
usecase: self.clone(),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue