autocommit 2022-04-16 13:42:13 CEST
This commit is contained in:
parent
4826305236
commit
50b792db78
27 changed files with 217 additions and 60 deletions
|
|
@ -61,10 +61,10 @@ impl WlDataDevice {
|
|||
self.manager.client.event(Leave { self_id: self.id })
|
||||
}
|
||||
|
||||
pub fn send_enter(&self, surface: WlSurfaceId, x: Fixed, y: Fixed, offer: WlDataOfferId) {
|
||||
pub fn send_enter(&self, surface: WlSurfaceId, x: Fixed, y: Fixed, offer: WlDataOfferId, serial: u32) {
|
||||
self.manager.client.event(Enter {
|
||||
self_id: self.id,
|
||||
serial: 0,
|
||||
serial,
|
||||
surface,
|
||||
x,
|
||||
y,
|
||||
|
|
@ -87,6 +87,7 @@ impl WlDataDevice {
|
|||
|
||||
fn start_drag(&self, parser: MsgParser<'_, '_>) -> Result<(), StartDragError> {
|
||||
let req: StartDrag = self.manager.client.parse(self, parser)?;
|
||||
self.manager.client.validate_serial(req.serial)?;
|
||||
let origin = self.manager.client.lookup(req.origin)?;
|
||||
let source = if req.source.is_some() {
|
||||
Some(self.manager.client.lookup(req.source)?)
|
||||
|
|
@ -100,18 +101,29 @@ impl WlDataDevice {
|
|||
} else {
|
||||
None
|
||||
};
|
||||
self.seat.global.start_drag(&origin, source, icon)?;
|
||||
self.seat
|
||||
.global
|
||||
.start_drag(&origin, source, icon, req.serial)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn set_selection(&self, parser: MsgParser<'_, '_>) -> Result<(), SetSelectionError> {
|
||||
let req: SetSelection = self.manager.client.parse(self, parser)?;
|
||||
self.manager.client.validate_serial(req.serial)?;
|
||||
if !self
|
||||
.seat
|
||||
.global
|
||||
.may_modify_selection(&self.seat.client, req.serial)
|
||||
{
|
||||
log::warn!("Ignoring disallowed set_selection request");
|
||||
return Ok(());
|
||||
}
|
||||
let src = if req.source.is_none() {
|
||||
None
|
||||
} else {
|
||||
Some(self.manager.client.lookup(req.source)?)
|
||||
};
|
||||
self.seat.global.set_selection(src)?;
|
||||
self.seat.global.set_selection(src, Some(req.serial))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ impl WlDataOffer {
|
|||
|
||||
fn accept(&self, parser: MsgParser<'_, '_>) -> Result<(), AcceptError> {
|
||||
let req: Accept = self.client.parse(self, parser)?;
|
||||
let _ = req.serial; // unused
|
||||
let mut state = self.data.shared.state.get();
|
||||
if state.contains(OFFER_STATE_FINISHED) {
|
||||
return Err(AcceptError::AlreadyFinished);
|
||||
|
|
|
|||
|
|
@ -63,12 +63,17 @@ impl ZwpPrimarySelectionDeviceV1 {
|
|||
|
||||
fn set_selection(&self, parser: MsgParser<'_, '_>) -> Result<(), SetSelectionError> {
|
||||
let req: SetSelection = self.manager.client.parse(self, parser)?;
|
||||
self.seat.client.validate_serial(req.serial)?;
|
||||
if !self.seat.global.may_modify_primary_selection(&self.seat.client, req.serial) {
|
||||
log::warn!("Ignoring disallowed set_selection request");
|
||||
return Ok(());
|
||||
}
|
||||
let src = if req.source.is_none() {
|
||||
None
|
||||
} else {
|
||||
Some(self.manager.client.lookup(req.source)?)
|
||||
};
|
||||
self.seat.global.set_primary_selection(src)?;
|
||||
self.seat.global.set_primary_selection(src, Some(req.serial))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue