diff --git a/winit/Cargo.toml b/winit/Cargo.toml index bfcfacbcf5..d0db1c7fbe 100644 --- a/winit/Cargo.toml +++ b/winit/Cargo.toml @@ -9,19 +9,26 @@ repository = "https://github.com/hecrj/iced" documentation = "https://docs.rs/iced_winit" keywords = ["gui", "ui", "graphics", "interface", "widgets"] categories = ["gui"] +resolver = "2" [features] debug = ["iced_native/debug"] +mainline_winit = ["winit_mainline"] +forked_winit = ["winit_fork"] +default = ["mainline_winit"] [dependencies] window_clipboard = "0.2" log = "0.4" thiserror = "1.0" -[dependencies.winit] -version = "0.26" -git = "https://github.com/iced-rs/winit" -rev = "02a12380960cec2f351c09a33d6a7cc2789d96a6" +[dependencies.winit_mainline] +path = "./winit_mainline" +optional = true + +[dependencies.winit_fork] +path = "./winit_fork" +optional = true [dependencies.iced_native] version = "0.4" diff --git a/winit/src/application.rs b/winit/src/application.rs index 32423e80c2..e1c32976ab 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -10,6 +10,7 @@ use crate::{ Color, Command, Debug, Error, Executor, Mode, Proxy, Runtime, Settings, Size, Subscription, }; +use crate::winit; use iced_futures::futures; use iced_futures::futures::channel::mpsc; @@ -333,6 +334,7 @@ async fn run_instance( window.request_redraw(); } + #[cfg(feature = "forked_winit")] event::Event::PlatformSpecific(event::PlatformSpecific::MacOS( event::MacOS::ReceivedUrl(url), )) => { diff --git a/winit/src/application/state.rs b/winit/src/application/state.rs index b54d3aed10..b67d329df4 100644 --- a/winit/src/application/state.rs +++ b/winit/src/application/state.rs @@ -2,6 +2,7 @@ use crate::conversion; use crate::{Application, Color, Debug, Mode, Point, Size, Viewport}; use std::marker::PhantomData; +use crate::winit; use winit::event::{Touch, WindowEvent}; use winit::window::Window; diff --git a/winit/src/clipboard.rs b/winit/src/clipboard.rs index 1b92b28dc8..d2d72db0a3 100644 --- a/winit/src/clipboard.rs +++ b/winit/src/clipboard.rs @@ -2,6 +2,7 @@ pub use iced_native::clipboard::Action; use crate::command::{self, Command}; +use crate::winit; /// A buffer for short-term storage and transfer within and between /// applications. diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs index b00a095d1c..241455ffa1 100644 --- a/winit/src/conversion.rs +++ b/winit/src/conversion.rs @@ -6,7 +6,7 @@ use crate::keyboard; use crate::mouse; use crate::touch; use crate::window; -use crate::{Event, Mode, Point, Position}; +use crate::{Event, Mode, Point, Position, winit}; /// Converts a winit window event into an iced event. pub fn window_event( diff --git a/winit/src/error.rs b/winit/src/error.rs index 8e1d20e879..ece0093cf7 100644 --- a/winit/src/error.rs +++ b/winit/src/error.rs @@ -1,4 +1,5 @@ use iced_futures::futures; +use crate::winit; /// An error that occurred while running an application. #[derive(Debug, thiserror::Error)] diff --git a/winit/src/lib.rs b/winit/src/lib.rs index b31adf6e62..fc84f9c670 100644 --- a/winit/src/lib.rs +++ b/winit/src/lib.rs @@ -25,7 +25,13 @@ #[doc(no_inline)] pub use iced_native::*; -pub use winit; + +// #[cfg(all(feature = ""))] + +#[cfg(feature = "mainline_winit")] +pub use winit_mainline::winit as winit; +#[cfg(feature = "forked_winit")] +pub use winit_fork::winit as winit; pub mod application; pub mod clipboard; diff --git a/winit/src/proxy.rs b/winit/src/proxy.rs index 7b9074d727..6be3059f76 100644 --- a/winit/src/proxy.rs +++ b/winit/src/proxy.rs @@ -4,6 +4,7 @@ use iced_native::futures::{ Sink, }; use std::pin::Pin; +use crate::winit; /// An event loop proxy that implements `Sink`. #[derive(Debug)] diff --git a/winit/src/settings.rs b/winit/src/settings.rs index 045cb1561c..dd838331a3 100644 --- a/winit/src/settings.rs +++ b/winit/src/settings.rs @@ -15,6 +15,7 @@ pub use platform::PlatformSpecific; use crate::conversion; use crate::{Mode, Position}; +use crate::winit; use winit::monitor::MonitorHandle; use winit::window::WindowBuilder; @@ -123,7 +124,7 @@ impl Window { target_os = "openbsd" ))] { - use ::winit::platform::unix::WindowBuilderExtUnix; + use winit::platform::unix::WindowBuilderExtUnix; if let Some(id) = _id { window_builder = window_builder.with_app_id(id); diff --git a/winit/winit_fork/Cargo.toml b/winit/winit_fork/Cargo.toml new file mode 100644 index 0000000000..82729a6d27 --- /dev/null +++ b/winit/winit_fork/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "winit_fork" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies.winit] +version = "0.26" +git = "https://github.com/iced-rs/winit" +rev = "02a12380960cec2f351c09a33d6a7cc2789d96a6" \ No newline at end of file diff --git a/winit/winit_fork/src/lib.rs b/winit/winit_fork/src/lib.rs new file mode 100644 index 0000000000..d51cad0942 --- /dev/null +++ b/winit/winit_fork/src/lib.rs @@ -0,0 +1 @@ +pub use winit; diff --git a/winit/winit_mainline/Cargo.toml b/winit/winit_mainline/Cargo.toml new file mode 100644 index 0000000000..8ac32bee7a --- /dev/null +++ b/winit/winit_mainline/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "winit_mainline" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +winit = "0.26" \ No newline at end of file diff --git a/winit/winit_mainline/src/lib.rs b/winit/winit_mainline/src/lib.rs new file mode 100644 index 0000000000..be97ca88bf --- /dev/null +++ b/winit/winit_mainline/src/lib.rs @@ -0,0 +1 @@ +pub use winit; \ No newline at end of file