Expand description
Start a drag operation out of a window on macOS, Windows and Linux (via GTK).
Tested for tao (latest), winit (latest), wry (v0.24) and tauri (v1) windows.
Due to the GTK-based implementation, winit currently cannot leverage this crate on Linux yet.
- Add the
drag
dependency:
$ cargo add drag
-
Use the
drag::start_drag
function. It takes a&T: raw_window_handle::HasWindowHandle
type on macOS and Windows, and a>k::ApplicationWindow
on Linux: -
tao:
let event_loop = tao::event_loop::EventLoop::new(); let window = tao::window::WindowBuilder::new().build(&event_loop).unwrap(); let item = drag::DragItem::Files(vec![std::fs::canonicalize("./examples/icon.png").unwrap()]); let preview_icon = drag::Image::File("./examples/icon.png".into()); drag::start_drag( #[cfg(target_os = "linux")] { use tao::platform::unix::WindowExtUnix; window.gtk_window() }, #[cfg(not(target_os = "linux"))] &window, item, preview_icon, |result, cursor_position| { println!("drag result: {result:?}"); }, drag::Options::default(), );
- wry:
let event_loop = tao::event_loop::EventLoop::new(); let window = tao::window::WindowBuilder::new().build(&event_loop).unwrap(); let webview = wry::WebViewBuilder::new().build(&window).unwrap(); let item = drag::DragItem::Files(vec![std::fs::canonicalize("./examples/icon.png").unwrap()]); let preview_icon = drag::Image::File("./examples/icon.png".into()); drag::start_drag( #[cfg(target_os = "linux")] { use tao::platform::unix::WindowExtUnix; window.gtk_window() }, #[cfg(not(target_os = "linux"))] &window, item, preview_icon, |result, cursor_position| { println!("drag result: {result:?}"); }, drag::Options::default(), );
- winit:
ⓘlet window = ...winit window; let item = drag::DragItem::Files(vec![std::fs::canonicalize("./examples/icon.png").unwrap()]); let preview_icon = drag::Image::File("./examples/icon.png".into()); let _ = drag::start_drag(&window, item, preview_icon, |result, cursor_position| { println!("drag result: {result:?}"); }, Default::default());
Structs§
- Cursor
Position - Logical position of the cursor.
- Options
Enums§
- Drag
Item - Item to be dragged.
- Drag
Mode - Drag
Result - Error
- Image
- An image definition.