Linux: default to XWayland for file drag-and-drop on Wayland desktops
This commit is contained in:
1 parent
365879c722
commit
52d2936f94
3 files changed
+15
No files matched your search
Generated
+1
@@ -3068,6 +3068,7 @@ dependencies = [
|
|||||||
"serde_json",
|
"serde_json",
|
||||||
"solvecraft-engine",
|
"solvecraft-engine",
|
||||||
"solvecraft-ui-egui",
|
"solvecraft-ui-egui",
|
||||||
|
"winit",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
@@ -18,3 +18,6 @@ egui = { workspace = true }
|
|||||||
serde_json = { workspace = true }
|
serde_json = { workspace = true }
|
||||||
log = { workspace = true }
|
log = { workspace = true }
|
||||||
rfd = { workspace = true }
|
rfd = { workspace = true }
|
||||||
|
|
||||||
|
[target.'cfg(all(unix, not(target_os = "macos")))'.dependencies]
|
||||||
|
winit = { version = "0.30", default-features = false, features = ["x11"] }
|
||||||
@@ -132,6 +132,17 @@ fn main() -> eframe::Result {
|
|||||||
multisampling: samples,
|
multisampling: samples,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
let mut options = options;
|
||||||
|
#[cfg(all(unix, not(target_os = "macos")))]
|
||||||
|
// winit has no file drag-and-drop on Wayland (only on X11), so dropping files from the file
|
||||||
|
// manager showed a "no" cursor. Run through XWayland when it's there; SOLVECRAFT_WAYLAND=1
|
||||||
|
// keeps the native Wayland backend.
|
||||||
|
if std::env::var_os("DISPLAY").is_some() && std::env::var_os("SOLVECRAFT_WAYLAND").is_none() {
|
||||||
|
options.event_loop_builder = Some(Box::new(|b| {
|
||||||
|
use winit::platform::x11::EventLoopBuilderExtX11;
|
||||||
|
b.with_x11();
|
||||||
|
}));
|
||||||
|
}
|
||||||
eframe::run_native(
|
eframe::run_native(
|
||||||
"SolveCraft",
|
"SolveCraft",
|
||||||
options,
|
options,
|
||||||
|
|||||||
Reference in new issue
Block a user