chroe: add note
This commit is contained in:
parent
e91be7dfc2
commit
6bc77815ef
1 changed files with 18 additions and 12 deletions
|
|
@ -38,8 +38,11 @@ use url::Url;
|
||||||
|
|
||||||
const MIN_DIM_SIZE: usize = 256;
|
const MIN_DIM_SIZE: usize = 256;
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
// Example usage if RawSurface weren't already implemented
|
||||||
struct MySurface(WlSurface);
|
struct MySurface(WlSurface);
|
||||||
|
|
||||||
|
// Example usage if RawSurface weren't already implemented
|
||||||
impl smithay_clipboard::dnd::RawSurface for MySurface {
|
impl smithay_clipboard::dnd::RawSurface for MySurface {
|
||||||
unsafe fn get_ptr(&mut self) -> *mut c_void {
|
unsafe fn get_ptr(&mut self) -> *mut c_void {
|
||||||
self.0.id().as_ptr().cast()
|
self.0.id().as_ptr().cast()
|
||||||
|
|
@ -78,32 +81,34 @@ fn main() {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
match event {
|
match event {
|
||||||
smithay_clipboard::dnd::DndEvent::Offer(id, OfferEvent::Data { data, mime_type }) => {
|
smithay_clipboard::dnd::DndEvent::Offer(id, OfferEvent::Data {
|
||||||
|
data, mime_type
|
||||||
|
}) => {
|
||||||
let s = smithay_clipboard::text::Text::try_from((data, mime_type)).unwrap();
|
let s = smithay_clipboard::text::Text::try_from((data, mime_type)).unwrap();
|
||||||
println!("Received DnD data for {}: {}", id.unwrap_or_default(), s.0);
|
println!("Received DnD data for {}: {}", id.unwrap_or_default(), s.0);
|
||||||
},
|
},
|
||||||
smithay_clipboard::dnd::DndEvent::Offer(id, OfferEvent::Leave) => {
|
smithay_clipboard::dnd::DndEvent::Offer(id, OfferEvent::Leave) =>
|
||||||
if state.internal_dnd {
|
{
|
||||||
|
if state.internal_dnd {
|
||||||
if state.pointer_focus {
|
if state.pointer_focus {
|
||||||
println!("Internal drop completed!");
|
println!("Internal drop completed!");
|
||||||
} else {
|
} else {
|
||||||
// Internal DnD will be ignored after leaving the window in which it
|
// Internal DnD will be ignored after leaving the window in which it started.
|
||||||
// started. Another approach might be to allow it to
|
// Another approach might be to allow it to re-enter before some time has passed.
|
||||||
// re-enter before some time has passed.
|
|
||||||
state.internal_dnd = false;
|
state.internal_dnd = false;
|
||||||
state.clipboard.end_dnd();
|
state.clipboard.end_dnd();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
println!("Dnd offer left {id:?}.");
|
println!("Dnd offer left {id:?}.");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
smithay_clipboard::dnd::DndEvent::Source(SourceEvent::Finished) => {
|
smithay_clipboard::dnd::DndEvent::Source(SourceEvent::Finished) => {
|
||||||
println!("Finished sending data.");
|
println!("Finished sending data.");
|
||||||
state.internal_dnd = false;
|
state.internal_dnd = false;
|
||||||
},
|
},
|
||||||
e => {
|
e => {
|
||||||
dbg!(e);
|
dbg!(e);
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -148,6 +153,7 @@ fn main() {
|
||||||
actions: DndAction::Move,
|
actions: DndAction::Move,
|
||||||
preferred: DndAction::Move,
|
preferred: DndAction::Move,
|
||||||
},
|
},
|
||||||
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
let mut simple_window = SimpleWindow {
|
let mut simple_window = SimpleWindow {
|
||||||
|
|
@ -381,12 +387,12 @@ impl PointerHandler for SimpleWindow {
|
||||||
DndAction::all(),
|
DndAction::all(),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
PointerEventKind::Leave { .. } => {
|
PointerEventKind::Leave {..} => {
|
||||||
self.pointer_focus = false;
|
self.pointer_focus = false;
|
||||||
},
|
}
|
||||||
PointerEventKind::Enter { .. } => {
|
PointerEventKind::Enter {..} => {
|
||||||
self.pointer_focus = true;
|
self.pointer_focus = true;
|
||||||
},
|
}
|
||||||
_ => {},
|
_ => {},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue