diff --git a/Cargo.lock b/Cargo.lock index 9fddcd2e..3aa9a01d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1071,7 +1071,6 @@ dependencies = [ [[package]] name = "clipboard_macos" version = "0.1.0" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#3a7af79e54db6854d8aa9d9e2866a9288d0f95d5" dependencies = [ "objc", "objc-foundation", @@ -1081,22 +1080,12 @@ dependencies = [ [[package]] name = "clipboard_wayland" version = "0.2.2" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#3a7af79e54db6854d8aa9d9e2866a9288d0f95d5" dependencies = [ "dnd", "mime 0.1.0", "smithay-clipboard", ] -[[package]] -name = "clipboard_x11" -version = "0.4.2" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#3a7af79e54db6854d8aa9d9e2866a9288d0f95d5" -dependencies = [ - "thiserror 1.0.69", - "x11rb", -] - [[package]] name = "clock" version = "0.1.0" @@ -1289,7 +1278,6 @@ dependencies = [ [[package]] name = "cosmic-client-toolkit" version = "0.2.0" -source = "git+https://github.com/pop-os/cosmic-protocols?rev=160b086#160b086abe03cd34a8a375d7fbe47b24308d1f38" dependencies = [ "bitflags 2.11.0", "cosmic-protocols", @@ -1302,7 +1290,6 @@ dependencies = [ [[package]] name = "cosmic-protocols" version = "0.2.0" -source = "git+https://github.com/pop-os/cosmic-protocols?rev=160b086#160b086abe03cd34a8a375d7fbe47b24308d1f38" dependencies = [ "bitflags 2.11.0", "wayland-backend", @@ -1315,8 +1302,7 @@ dependencies = [ [[package]] name = "cosmic-text" -version = "0.18.2" -source = "git+https://github.com/pop-os/cosmic-text.git#9a2ab09f06905e91f41d64ac6eee887726e7fd76" +version = "0.19.0" dependencies = [ "bitflags 2.11.0", "fontdb", @@ -1334,6 +1320,7 @@ dependencies = [ "unicode-linebreak", "unicode-script", "unicode-segmentation", + "unicode-width", ] [[package]] @@ -1440,7 +1427,6 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "cryoglyph" version = "0.1.0" -source = "git+https://github.com/pop-os/glyphon.git?tag=cosmic-0.14#c49de15bce4d8254ac136d1be9911960cc85ce12" dependencies = [ "cosmic-text", "etagere", @@ -1617,7 +1603,6 @@ dependencies = [ [[package]] name = "dnd" version = "0.1.0" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#3a7af79e54db6854d8aa9d9e2866a9288d0f95d5" dependencies = [ "bitflags 2.11.0", "mime 0.1.0", @@ -1652,30 +1637,6 @@ dependencies = [ [[package]] name = "dpi" version = "0.1.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" - -[[package]] -name = "drm" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde" -dependencies = [ - "bitflags 2.11.0", - "bytemuck", - "drm-ffi", - "drm-fourcc", - "rustix 0.38.44", -] - -[[package]] -name = "drm-ffi" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41334f8405792483e32ad05fbb9c5680ff4e84491883d2947a4757dc54cb2ac6" -dependencies = [ - "drm-sys", - "rustix 0.38.44", -] [[package]] name = "drm-fourcc" @@ -1683,16 +1644,6 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" -[[package]] -name = "drm-sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d09ff881f92f118b11105ba5e34ff8f4adf27b30dae8f12e28c193af1c83176" -dependencies = [ - "libc", - "linux-raw-sys 0.6.5", -] - [[package]] name = "editor" version = "0.1.0" @@ -3829,12 +3780,6 @@ version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" -[[package]] -name = "linux-raw-sys" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a385b1be4e5c3e362ad2ffa73c392e53f031eaa5b7d648e64cd87f27f6063d7" - [[package]] name = "linux-raw-sys" version = "0.12.1" @@ -4060,7 +4005,6 @@ dependencies = [ [[package]] name = "mime" version = "0.1.0" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#3a7af79e54db6854d8aa9d9e2866a9288d0f95d5" dependencies = [ "smithay-clipboard", ] @@ -6301,7 +6245,6 @@ dependencies = [ [[package]] name = "smithay-clipboard" version = "0.8.0" -source = "git+https://github.com/pop-os/smithay-clipboard?tag=sctk-0.20#859b02c88f45c554049a67c6ddeec1692ce0e20b" dependencies = [ "libc", "raw-window-handle", @@ -6359,14 +6302,12 @@ dependencies = [ [[package]] name = "softbuffer" version = "0.4.1" -source = "git+https://github.com/pop-os/softbuffer?tag=cosmic-4.0#a3f77e251e7422803f693df6e3fc313c010c4dcb" dependencies = [ "as-raw-xcb-connection", "bytemuck", "cfg_aliases", "cocoa", "core-graphics", - "drm", "fastrand", "foreign-types 0.5.0", "js-sys", @@ -8048,12 +7989,10 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "window_clipboard" version = "0.4.1" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#3a7af79e54db6854d8aa9d9e2866a9288d0f95d5" dependencies = [ "clipboard-win", "clipboard_macos", "clipboard_wayland", - "clipboard_x11", "dnd", "mime 0.1.0", "raw-window-handle", @@ -8621,7 +8560,6 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" dependencies = [ "bitflags 2.11.0", "cfg_aliases", @@ -8647,7 +8585,6 @@ dependencies = [ [[package]] name = "winit-android" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" dependencies = [ "android-activity", "bitflags 2.11.0", @@ -8662,7 +8599,6 @@ dependencies = [ [[package]] name = "winit-appkit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" dependencies = [ "bitflags 2.11.0", "block2 0.6.2", @@ -8684,7 +8620,6 @@ dependencies = [ [[package]] name = "winit-common" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" dependencies = [ "memmap2 0.9.10", "objc2 0.6.4", @@ -8699,7 +8634,6 @@ dependencies = [ [[package]] name = "winit-core" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" dependencies = [ "bitflags 2.11.0", "cursor-icon", @@ -8713,7 +8647,6 @@ dependencies = [ [[package]] name = "winit-orbital" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" dependencies = [ "bitflags 2.11.0", "dpi", @@ -8729,7 +8662,6 @@ dependencies = [ [[package]] name = "winit-uikit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" dependencies = [ "bitflags 2.11.0", "block2 0.6.2", @@ -8749,7 +8681,6 @@ dependencies = [ [[package]] name = "winit-wayland" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" dependencies = [ "ahash", "bitflags 2.11.0", @@ -8775,7 +8706,6 @@ dependencies = [ [[package]] name = "winit-web" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" dependencies = [ "atomic-waker", "bitflags 2.11.0", @@ -8797,7 +8727,6 @@ dependencies = [ [[package]] name = "winit-win32" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" dependencies = [ "bitflags 2.11.0", "cursor-icon", @@ -8813,7 +8742,6 @@ dependencies = [ [[package]] name = "winit-x11" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6" dependencies = [ "bitflags 2.11.0", "bytemuck", diff --git a/Cargo.toml b/Cargo.toml index 49b4b5d7..488eb21f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -238,10 +238,10 @@ async-std = "1.0" bitflags = "2.5" bytemuck = { version = "1.0", features = ["derive"] } bytes = "1.6" -cosmic-text = { git = "https://github.com/pop-os/cosmic-text.git" } +cosmic-text = { path = "../../cosmic-text" } # cosmic-text = "0.10" dark-light = "1.0" -cryoglyph = { package = "cryoglyph", git = "https://github.com/pop-os/glyphon.git", tag = "cosmic-0.14" } +cryoglyph = { package = "cryoglyph", path = "../../glyphon" } resvg = "0.45" web-sys = "0.3.69" guillotiere = "0.6" @@ -275,8 +275,11 @@ tiny-skia = { version = "0.11", default-features = false, features = [ "std", "simd", ] } -cctk = { git = "https://github.com/pop-os/cosmic-protocols", package = "cosmic-client-toolkit", rev = "160b086" } -softbuffer = { git = "https://github.com/pop-os/softbuffer", tag = "cosmic-4.0" } +cctk = { path = "../../cosmic-protocols/client-toolkit", package = "cosmic-client-toolkit" } +# Yoda: default-features=false drops softbuffer's x11 / x11-dlopen (pulled +# tiny-xlib + as-raw-xcb-connection). The wayland + wayland-dlopen features +# are re-activated via iced_tiny_skia's own `wayland` feature propagation. +softbuffer = { path = "../../softbuffer", default-features = false } syntect = "5.2" tokio = "1.0" tracing = "0.1" @@ -302,13 +305,40 @@ wayland-client = { version = "0.31.5" } winapi = "0.3" # window_clipboard = "0.4.1" -window_clipboard = { git = "https://github.com/pop-os/window_clipboard.git", tag = "sctk-0.20" } -dnd = { git = "https://github.com/pop-os/window_clipboard.git", tag = "sctk-0.20" } -mime = { git = "https://github.com/pop-os/window_clipboard.git", tag = "sctk-0.20" } -winit = { git = "https://github.com/pop-os/winit.git", tag = "cosmic-0.14" } -winit-core = { git = "https://github.com/pop-os/winit.git", tag = "cosmic-0.14" } +# Yoda: window_clipboard pinned to our public fork that has x11 gated behind +# an opt-in feature. default-features=false + features=["wayland"] drops +# clipboard_x11 + x11rb from the build. Branch yoda-x11-optional on +# https://forge.aditua.com/leyoda/window_clipboard. +window_clipboard = { path = "../../window_clipboard", default-features = false, features = ["wayland"] } +dnd = { path = "../../window_clipboard/dnd" } +mime = { path = "../../window_clipboard/mime" } +# Yoda: default-features = false drops winit's x11 default, which otherwise +# pulls winit-x11, x11-dl, tiny-xlib, as-raw-xcb-connection. Our Wayland-only +# fork doesn't need any of that — the wayland + wayland-dlopen features are +# re-enabled via iced_winit's own feature propagation from libcosmic-yoda. +winit = { path = "../../winit/winit", default-features = false } +winit-core = { path = "../../winit/winit-core" } cursor-icon = "1.1.0" +[patch.'https://github.com/pop-os/softbuffer'] +softbuffer = { path = "../../softbuffer" } + +[patch.'https://github.com/pop-os/smithay-clipboard'] +smithay-clipboard = { path = "../../smithay-clipboard" } + +[patch.'https://github.com/pop-os/winit.git'] +dpi = { path = "../../winit/dpi" } +winit = { path = "../../winit/winit" } +winit-android = { path = "../../winit/winit-android" } +winit-appkit = { path = "../../winit/winit-appkit" } +winit-common = { path = "../../winit/winit-common" } +winit-core = { path = "../../winit/winit-core" } +winit-orbital = { path = "../../winit/winit-orbital" } +winit-uikit = { path = "../../winit/winit-uikit" } +winit-wayland = { path = "../../winit/winit-wayland" } +winit-web = { path = "../../winit/winit-web" } +winit-win32 = { path = "../../winit/winit-win32" } +winit-x11 = { path = "../../winit/winit-x11" } [workspace.lints.rust] rust_2018_idioms = { level = "deny", priority = -1 } diff --git a/core/src/element.rs b/core/src/element.rs index f97ed6bc..dbe449c5 100644 --- a/core/src/element.rs +++ b/core/src/element.rs @@ -1,4 +1,4 @@ -use crate::event::{self, Event}; +use crate::event::Event; use crate::id::Id; use crate::layout; use crate::mouse; diff --git a/core/src/overlay/group.rs b/core/src/overlay/group.rs index ec0906e7..1a4ce672 100644 --- a/core/src/overlay/group.rs +++ b/core/src/overlay/group.rs @@ -3,7 +3,7 @@ use crate::mouse; use crate::overlay; use crate::renderer; use crate::widget; -use crate::{Clipboard, Event, Layout, Overlay, Point, Rectangle, Shell, Size}; +use crate::{Clipboard, Event, Layout, Overlay, Shell, Size}; /// An [`Overlay`] container that displays multiple overlay [`overlay::Element`] /// children. diff --git a/core/src/settings.rs b/core/src/settings.rs index be744b36..2ee1021d 100644 --- a/core/src/settings.rs +++ b/core/src/settings.rs @@ -63,13 +63,3 @@ impl Default for Settings { } } -#[cfg(feature = "winit")] -impl From for iced_winit::Settings { - fn from(settings: Settings) -> iced_winit::Settings { - iced_winit::Settings { - id: settings.id, - fonts: settings.fonts, - is_daemon: settings.is_daemon, - } - } -} diff --git a/core/src/widget/operation/search_id.rs b/core/src/widget/operation/search_id.rs index 1286abaf..e03fac8a 100644 --- a/core/src/widget/operation/search_id.rs +++ b/core/src/widget/operation/search_id.rs @@ -4,7 +4,7 @@ use super::Operation; use crate::{ Rectangle, id::Id, - widget::operation::{Outcome, focusable::Count}, + widget::operation::Outcome, }; /// Produces an [`Operation`] that searches for the Id diff --git a/core/src/widget/text.rs b/core/src/widget/text.rs index 1e40bf9e..19e76761 100644 --- a/core/src/widget/text.rs +++ b/core/src/widget/text.rs @@ -25,13 +25,12 @@ use crate::layout; use crate::mouse; use crate::renderer; use crate::text::paragraph::{self, Paragraph}; -use crate::text::{self, Fragment}; +use crate::text::{self}; use crate::widget::tree::{self, Tree}; use crate::{ Color, Element, Layout, Length, Pixels, Rectangle, Size, Theme, Widget, }; -use std::borrow::Cow; pub use text::{Alignment, Ellipsize, LineHeight, Shaping, Wrapping}; /// A bunch of text. diff --git a/graphics/src/image.rs b/graphics/src/image.rs index e5fe9281..d9b23216 100644 --- a/graphics/src/image.rs +++ b/graphics/src/image.rs @@ -2,8 +2,6 @@ #[cfg(feature = "image")] use crate::core::Bytes; -use crate::core::Color; -use crate::core::Radians; use crate::core::Rectangle; use crate::core::image; use crate::core::svg; diff --git a/runtime/src/dnd.rs b/runtime/src/dnd.rs index e6f2b267..446bee68 100644 --- a/runtime/src/dnd.rs +++ b/runtime/src/dnd.rs @@ -1,10 +1,8 @@ //! Access the clipboard. -use std::any::Any; use dnd::{DndDestinationRectangle, DndSurface}; -use iced_core::clipboard::DndSource; -use window_clipboard::mime::{AllowedMimeTypes, AsMimeTypes}; +use window_clipboard::mime::AllowedMimeTypes; use crate::{oneshot, task, Action, Task}; diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index 22da3d66..68034bfc 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -28,7 +28,6 @@ pub use task::Task; pub use user_interface::UserInterface; pub use window::Window; -use crate::core::Color; use crate::futures::futures::channel::oneshot; use std::borrow::Cow; diff --git a/runtime/src/platform_specific/wayland/popup.rs b/runtime/src/platform_specific/wayland/popup.rs index e0475eb8..d186f5f0 100644 --- a/runtime/src/platform_specific/wayland/popup.rs +++ b/runtime/src/platform_specific/wayland/popup.rs @@ -1,14 +1,12 @@ -use std::any::Any; use std::fmt; use std::hash::{Hash, Hasher}; -use std::sync::Arc; use cctk::sctk::reexports::protocols::xdg::shell::client::xdg_positioner::{ Anchor, Gravity, }; use iced_core::layout::Limits; use iced_core::window::Id; -use iced_core::{Element, Rectangle}; +use iced_core::Rectangle; /// Popup creation details #[derive(Debug, Clone)] diff --git a/runtime/src/platform_specific/wayland/subsurface.rs b/runtime/src/platform_specific/wayland/subsurface.rs index f174b0a5..13ae6da2 100644 --- a/runtime/src/platform_specific/wayland/subsurface.rs +++ b/runtime/src/platform_specific/wayland/subsurface.rs @@ -1,14 +1,9 @@ -use std::any::Any; use std::fmt; use std::hash::{Hash, Hasher}; -use std::sync::Arc; -use cctk::sctk::reexports::protocols::xdg::shell::client::xdg_positioner::{ - Anchor, Gravity, -}; -use iced_core::layout::Limits; +use cctk::sctk::reexports::protocols::xdg::shell::client::xdg_positioner::Gravity; use iced_core::window::Id; -use iced_core::{Element, Point, Rectangle, Size}; +use iced_core::{Point, Rectangle, Size}; /// Subsurface creation details #[derive(Debug, Clone)] diff --git a/tiny_skia/src/raster.rs b/tiny_skia/src/raster.rs index 7c820917..cf508c9c 100644 --- a/tiny_skia/src/raster.rs +++ b/tiny_skia/src/raster.rs @@ -57,7 +57,7 @@ impl Pipeline { let width_scale = bounds.width / image.width() as f32; let height_scale = bounds.height / image.height() as f32; - let quality = match filter_method { + let _quality = match filter_method { raster::FilterMethod::Linear => tiny_skia::FilterQuality::Bilinear, raster::FilterMethod::Nearest => tiny_skia::FilterQuality::Nearest, }; diff --git a/wgpu/Cargo.toml b/wgpu/Cargo.toml index 48fca1b8..ffbcd293 100644 --- a/wgpu/Cargo.toml +++ b/wgpu/Cargo.toml @@ -25,6 +25,11 @@ svg = ["iced_graphics/svg", "resvg/text"] web-colors = ["iced_graphics/web-colors"] webgl = ["wgpu/webgl"] strict-assertions = [] +# Yoda: opt-in X11 backend. Pulls tiny-xlib/as-raw-xcb-connection/x11rb +# (which otherwise were unconditional direct deps on unix). Wayland-only +# builds just leave this off — window/x11.rs and the DRI3 device-id +# fallback in window/compositor.rs are cfg-gated on it. +x11 = ["dep:as-raw-xcb-connection", "dep:tiny-xlib", "dep:x11rb"] [dependencies] iced_debug.workspace = true @@ -57,9 +62,9 @@ wayland-protocols.workspace = true wayland-backend = { version = "0.3.3", features = ["client_system"] } wayland-client = { version = "0.31.2" } wayland-sys = { version = "0.31.1", features = ["dlopen"] } -as-raw-xcb-connection = "1.0.1" -tiny-xlib = "0.2.3" -x11rb = { version = "0.13.1", features = [ +as-raw-xcb-connection = { version = "1.0.1", optional = true } +tiny-xlib = { version = "0.2.3", optional = true } +x11rb = { version = "0.13.1", optional = true, features = [ "allow-unsafe-code", "dl-libxcb", "dri3", diff --git a/wgpu/src/layer.rs b/wgpu/src/layer.rs index d4a96ef8..c61730b6 100644 --- a/wgpu/src/layer.rs +++ b/wgpu/src/layer.rs @@ -1,4 +1,3 @@ -use crate::core::Radians; use crate::core::{ self, Background, Color, Point, Rectangle, Svg, Transformation, renderer, }; diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index 4eb52cc8..4b22ad0a 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -64,8 +64,8 @@ pub use geometry::Geometry; use crate::core::renderer; use crate::core::{ - Background, Color, Font, Pixels, Point, Radians, Rectangle, Size, - Transformation, Vector, image::FilterMethod, + Background, Color, Font, Pixels, Point, Rectangle, Size, + Transformation, }; use crate::graphics::mesh; use crate::graphics::text::{Editor, Paragraph}; @@ -671,50 +671,6 @@ impl Renderer { }); } - fn draw_overlay( - &mut self, - overlay: &[impl AsRef], - viewport: &Viewport, - ) { - use crate::core::Renderer as _; - use crate::core::alignment; - use crate::core::text::Renderer as _; - - self.with_layer( - Rectangle::with_size(viewport.logical_size()), - |renderer| { - for (i, line) in overlay.iter().enumerate() { - let text = crate::core::Text { - content: line.as_ref().to_owned(), - bounds: viewport.logical_size(), - size: Pixels(20.0), - line_height: core::text::LineHeight::default(), - font: Font::MONOSPACE, - align_x: core::text::Alignment::Left, - align_y: alignment::Vertical::Top, - shaping: core::text::Shaping::Advanced, - wrapping: core::text::Wrapping::Word, - ellipsize: core::text::Ellipsize::None, - }; - - renderer.fill_text( - text.clone(), - Point::new(11.0, 11.0 + 25.0 * i as f32), - Color::from_rgba(0.9, 0.9, 0.9, 1.0), - Rectangle::with_size(Size::INFINITE), - ); - - renderer.fill_text( - text, - Point::new(11.0, 11.0 + 25.0 * i as f32) - + Vector::new(-1.0, -1.0), - Color::BLACK, - Rectangle::with_size(Size::INFINITE), - ); - } - }, - ); - } } impl core::Renderer for Renderer { diff --git a/wgpu/src/window.rs b/wgpu/src/window.rs index b9ec54bd..f71b7d3f 100644 --- a/wgpu/src/window.rs +++ b/wgpu/src/window.rs @@ -7,7 +7,7 @@ pub mod compositor; not(target_os = "redox") ))] mod wayland; -#[cfg(all(unix, not(target_os = "macos"), not(target_os = "redox")))] +#[cfg(all(unix, feature = "x11", not(target_os = "macos"), not(target_os = "redox")))] mod x11; pub use compositor::Compositor; diff --git a/wgpu/src/window/compositor.rs b/wgpu/src/window/compositor.rs index 833a642e..a7009d14 100644 --- a/wgpu/src/window/compositor.rs +++ b/wgpu/src/window/compositor.rs @@ -16,9 +16,8 @@ use crate::{Engine, Renderer}; not(target_os = "redox") ))] use super::wayland::get_wayland_device_ids; -#[cfg(all(unix, not(target_os = "macos"), not(target_os = "redox")))] +#[cfg(all(unix, feature = "x11", not(target_os = "macos"), not(target_os = "redox")))] use super::x11::get_x11_device_ids; -use std::future::Future; /// A window graphics backend for iced powered by `wgpu`. pub struct Compositor { @@ -72,8 +71,10 @@ impl Compositor { not(target_os = "redox") ))] let ids = compatible_window.as_ref().and_then(|window| { - get_wayland_device_ids(window) - .or_else(|| get_x11_device_ids(window)) + let w = get_wayland_device_ids(window); + #[cfg(feature = "x11")] + let w = w.or_else(|| get_x11_device_ids(window)); + w }); // HACK: @@ -137,12 +138,6 @@ impl Compositor { .clone() .and_then(|window| instance.create_surface(window).ok()); - let mut adapter_options = wgpu::RequestAdapterOptions { - power_preference: wgpu::PowerPreference::from_env() - .unwrap_or(wgpu::PowerPreference::HighPerformance), - compatible_surface: compatible_surface.as_ref(), - force_fallback_adapter: false, - }; let mut adapter = None; #[cfg_attr(not(unix), allow(dead_code))] if std::env::var_os("WGPU_ADAPTER_NAME").is_none() { @@ -204,7 +199,7 @@ impl Compositor { .await; compatible_surface = compatible_window .and_then(|window| instance.create_surface(window).ok()); - adapter_options = wgpu::RequestAdapterOptions { + let adapter_options = wgpu::RequestAdapterOptions { power_preference: wgpu::PowerPreference::from_env() .unwrap_or(wgpu::PowerPreference::HighPerformance), compatible_surface: compatible_surface.as_ref(), diff --git a/widget/src/button.rs b/widget/src/button.rs index f137221e..ed7f6ea9 100644 --- a/widget/src/button.rs +++ b/widget/src/button.rs @@ -599,7 +599,7 @@ where (x + width) as f64, (y + height) as f64, ); - let is_hovered = state.state.downcast_ref::().is_hovered; + let _is_hovered = state.state.downcast_ref::().is_hovered; let mut node = Node::new(Role::Button); node.add_action(Action::Focus); diff --git a/widget/src/checkbox.rs b/widget/src/checkbox.rs index 873a4541..83960569 100644 --- a/widget/src/checkbox.rs +++ b/widget/src/checkbox.rs @@ -536,7 +536,7 @@ where }; let bounds = layout.bounds(); - let is_hovered = cursor.is_over(bounds); + let _is_hovered = cursor.is_over(bounds); let Rectangle { x, y, diff --git a/widget/src/container.rs b/widget/src/container.rs index c9a300c9..a264007a 100644 --- a/widget/src/container.rs +++ b/widget/src/container.rs @@ -35,7 +35,7 @@ use crate::core::{ color, }; -use iced_runtime::{Action, Task, task}; +use iced_runtime::{Task, task}; /// A widget that aligns its contents inside of its boundaries. /// @@ -601,7 +601,7 @@ pub fn visible_bounds(id: Id) -> Task> { operate: &mut dyn FnMut(&mut dyn Operation>), ) { self.depth += 1; - self.traverse(operate); + operate(self); self.depth -= 1; } diff --git a/widget/src/image.rs b/widget/src/image.rs index 4315709a..d726eeec 100644 --- a/widget/src/image.rs +++ b/widget/src/image.rs @@ -293,8 +293,8 @@ fn drawing_bounds( content_fit: ContentFit, rotation: Rotation, scale: f32, - opacity: f32, - border_radius: [f32; 4], + _opacity: f32, + _border_radius: [f32; 4], ) -> Rectangle where Renderer: image::Renderer, diff --git a/widget/src/keyed/column.rs b/widget/src/keyed/column.rs index baaee5c9..f3e33142 100644 --- a/widget/src/keyed/column.rs +++ b/widget/src/keyed/column.rs @@ -1,7 +1,6 @@ //! Keyed columns distribute content vertically while keeping continuity. //! Distribute content vertically. -use crate::core::event; use crate::core::layout; use crate::core::mouse; use crate::core::overlay; diff --git a/widget/src/lazy.rs b/widget/src/lazy.rs index 7a1f8506..b4db46a5 100644 --- a/widget/src/lazy.rs +++ b/widget/src/lazy.rs @@ -5,7 +5,6 @@ pub mod component; #[allow(deprecated)] pub use component::Component; -use iced_renderer::core::widget::Operation; mod cache; @@ -15,7 +14,7 @@ use crate::core::mouse; use crate::core::overlay; use crate::core::renderer; use crate::core::widget::tree::{self, Tree}; -use crate::core::widget::{self, Widget}; +use crate::core::widget::Widget; use crate::core::{ self, Clipboard, Event, Length, Rectangle, Shell, Size, Vector, }; diff --git a/widget/src/lazy/component.rs b/widget/src/lazy/component.rs index a810e117..b3c51f37 100644 --- a/widget/src/lazy/component.rs +++ b/widget/src/lazy/component.rs @@ -10,7 +10,6 @@ use crate::core::{ self, Clipboard, Element, Length, Rectangle, Shell, Size, Vector, Widget, }; -use iced_renderer::core::widget::Operation; use ouroboros::self_referencing; use std::cell::RefCell; use std::marker::PhantomData; @@ -527,11 +526,11 @@ where renderer: &Renderer, dnd_rectangles: &mut core::clipboard::DndDestinationRectangles, ) { - let mut tree = tree + let tree = tree .state .downcast_ref::>>>() .borrow_mut(); - let mut tree = tree.as_ref().unwrap(); + let tree = tree.as_ref().unwrap(); self.with_element(|element| { element.as_widget().drag_destinations( &tree.children[0], diff --git a/widget/src/list.rs b/widget/src/list.rs index de9fe9b8..d0d501d2 100644 --- a/widget/src/list.rs +++ b/widget/src/list.rs @@ -1,5 +1,5 @@ #![allow(missing_docs)] -use crate::core::event::{self, Event}; +use crate::core::event::Event; use crate::core::layout; use crate::core::mouse; use crate::core::overlay; @@ -366,7 +366,7 @@ where self.visible_elements .iter_mut() .zip(&mut state.visible_layouts) - .map(|(element, (index, layout, tree))| { + .for_each(|(element, (index, layout, tree))| { element.as_widget_mut().update( tree, event, diff --git a/widget/src/mouse_area.rs b/widget/src/mouse_area.rs index 3d355c52..4d808348 100644 --- a/widget/src/mouse_area.rs +++ b/widget/src/mouse_area.rs @@ -2,7 +2,6 @@ use iced_renderer::core::mouse::Click; -use crate::core::event; use crate::core::layout; use crate::core::mouse; use crate::core::overlay; diff --git a/widget/src/overlay/menu.rs b/widget/src/overlay/menu.rs index 94d2b6ad..e7c4dc23 100644 --- a/widget/src/overlay/menu.rs +++ b/widget/src/overlay/menu.rs @@ -575,7 +575,7 @@ where align_x: text::Alignment::Default, align_y: alignment::Vertical::Center, shaping: self.text_shaping, - wrapping: text::Wrapping::default(), + wrapping: self.text_wrap, ellipsize: text::Ellipsize::default(), }, Point::new(bounds.x + self.padding.left, bounds.center_y()), diff --git a/widget/src/pane_grid/content.rs b/widget/src/pane_grid/content.rs index a76010e7..4c41e3a6 100644 --- a/widget/src/pane_grid/content.rs +++ b/widget/src/pane_grid/content.rs @@ -6,7 +6,7 @@ use crate::core::renderer; use crate::core::widget::{self, Tree}; use crate::core::{ self, Clipboard, Element, Event, Layout, Point, Rectangle, Shell, Size, - Vector, event, + Vector, }; use crate::pane_grid::{Draggable, TitleBar}; diff --git a/widget/src/scrollable.rs b/widget/src/scrollable.rs index e005a7b8..b14e1413 100644 --- a/widget/src/scrollable.rs +++ b/widget/src/scrollable.rs @@ -27,7 +27,6 @@ use iced_runtime::core::widget::Id; #[cfg(feature = "a11y")] use std::borrow::Cow; -use crate::core::event; use crate::core::keyboard; use crate::core::layout; use crate::core::mouse; @@ -933,7 +932,7 @@ where let had_input_method = shell.input_method().is_enabled(); - let mut c_event = match event.clone() { + let c_event = match event.clone() { Event::Dnd(dnd::DndEvent::Offer( id, dnd::OfferEvent::Enter { @@ -1586,7 +1585,7 @@ where return A11yTree::default(); } let window = layout.bounds(); - let is_hovered = cursor.is_over(window); + let _is_hovered = cursor.is_over(window); let Rectangle { x, y, @@ -1670,7 +1669,7 @@ where })) { let scrollbar_bounds = scrollbar.total_bounds; - let is_hovered = cursor.is_over(scrollbar_bounds); + let _is_hovered = cursor.is_over(scrollbar_bounds); let Rectangle { x, y, diff --git a/widget/src/slider.rs b/widget/src/slider.rs index ff32f417..9516f55c 100644 --- a/widget/src/slider.rs +++ b/widget/src/slider.rs @@ -695,7 +695,7 @@ where }; let bounds = layout.bounds(); - let is_hovered = cursor.is_over(bounds); + let _is_hovered = cursor.is_over(bounds); let Rectangle { x, y, @@ -732,18 +732,14 @@ where node.set_labelled_by(label.clone()); } - if let Ok(min) = self.range.start().clone().try_into() { - node.set_min_numeric_value(min); - } - if let Ok(max) = self.range.end().clone().try_into() { - node.set_max_numeric_value(max); - } - if let Ok(value) = self.value.clone().try_into() { - node.set_numeric_value(value); - } - if let Ok(step) = self.step.clone().try_into() { - node.set_numeric_value_step(step); - } + let Ok(min) = self.range.start().clone().try_into(); + node.set_min_numeric_value(min); + let Ok(max) = self.range.end().clone().try_into(); + node.set_max_numeric_value(max); + let Ok(value) = self.value.clone().try_into(); + node.set_numeric_value(value); + let Ok(step) = self.step.clone().try_into(); + node.set_numeric_value_step(step); // TODO: This could be a setting on the slider node.set_live(iced_accessibility::accesskit::Live::Polite); diff --git a/widget/src/stack.rs b/widget/src/stack.rs index e85bf2af..cd30a886 100644 --- a/widget/src/stack.rs +++ b/widget/src/stack.rs @@ -1,6 +1,5 @@ //! Display content on top of other content. -use crate::core::event; use crate::core::layout; use crate::core::mouse; use crate::core::overlay; diff --git a/widget/src/svg.rs b/widget/src/svg.rs index 277af3eb..61b1e688 100644 --- a/widget/src/svg.rs +++ b/widget/src/svg.rs @@ -31,7 +31,6 @@ use crate::core::{ #[cfg(feature = "a11y")] use std::borrow::Cow; -use std::marker::PhantomData; use std::path::PathBuf; pub use crate::core::svg::Handle; diff --git a/widget/src/themer.rs b/widget/src/themer.rs index 306c8580..76448ae1 100644 --- a/widget/src/themer.rs +++ b/widget/src/themer.rs @@ -1,6 +1,5 @@ use crate::container; -use crate::core::event; use crate::core::layout; use crate::core::mouse; use crate::core::overlay; diff --git a/widget/src/toggler.rs b/widget/src/toggler.rs index d398a79b..43ba6930 100644 --- a/widget/src/toggler.rs +++ b/widget/src/toggler.rs @@ -37,7 +37,6 @@ use std::borrow::Cow; use iced_runtime::core::border::Radius; use crate::core::alignment; -use crate::core::border; use crate::core::layout; use crate::core::mouse; use crate::core::renderer; @@ -509,7 +508,7 @@ where let space = style.handle_margin; - let toggler_background_bounds = Rectangle { + let _toggler_background_bounds = Rectangle { x: bounds.x, y: bounds.y, width: bounds.width, @@ -529,7 +528,7 @@ where style.background, ); - let padding = (style.padding_ratio * bounds.height).round(); + let _padding = (style.padding_ratio * bounds.height).round(); let toggler_foreground_bounds = Rectangle { x: bounds.x + if self.is_toggled { @@ -570,7 +569,7 @@ where }; let bounds = layout.bounds(); - let is_hovered = cursor.is_over(bounds); + let _is_hovered = cursor.is_over(bounds); let Rectangle { x, y, diff --git a/winit/src/a11y.rs b/winit/src/a11y.rs index a901b480..8f6cf27b 100644 --- a/winit/src/a11y.rs +++ b/winit/src/a11y.rs @@ -4,11 +4,10 @@ use crate::futures::futures::channel::mpsc; use iced_accessibility::accesskit::{ ActivationHandler, Node, NodeId, Role, Tree, TreeId, TreeUpdate, }; -use iced_accessibility::accesskit_winit::Adapter; use iced_runtime::core; pub struct WinitActivationHandler { - pub proxy: mpsc::UnboundedSender, + pub(crate) proxy: mpsc::UnboundedSender, pub title: String, } @@ -34,7 +33,7 @@ impl ActivationHandler for WinitActivationHandler { pub struct WinitActionHandler { pub id: core::window::Id, - pub proxy: mpsc::UnboundedSender, + pub(crate) proxy: mpsc::UnboundedSender, } impl iced_accessibility::accesskit::ActionHandler for WinitActionHandler { @@ -49,7 +48,7 @@ impl iced_accessibility::accesskit::ActionHandler for WinitActionHandler { } pub struct WinitDeactivationHandler { - pub proxy: mpsc::UnboundedSender, + pub(crate) proxy: mpsc::UnboundedSender, } impl iced_accessibility::accesskit::DeactivationHandler diff --git a/winit/src/application/drag_resize.rs b/winit/src/application/drag_resize.rs index 6d575b52..5e524736 100644 --- a/winit/src/application/drag_resize.rs +++ b/winit/src/application/drag_resize.rs @@ -25,7 +25,7 @@ const DRAG_RESIZE_SUPPORTED: bool = false; /// If supported by winit, returns a closure that implements cursor resize support. pub fn event_func( - window: &dyn winit::window::Window, + _window: &dyn winit::window::Window, border_size: f64, ) -> Option< Box< diff --git a/winit/src/clipboard.rs b/winit/src/clipboard.rs index d302ac36..da83d37a 100644 --- a/winit/src/clipboard.rs +++ b/winit/src/clipboard.rs @@ -1,7 +1,7 @@ //! Access the clipboard. use std::sync::Mutex; -use std::{any::Any, borrow::Cow}; +use std::borrow::Cow; use crate::Control; diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs index fcb73c39..5192cb61 100644 --- a/winit/src/conversion.rs +++ b/winit/src/conversion.rs @@ -3,9 +3,6 @@ //! [`winit`]: https://github.com/rust-windowing/winit //! [`iced_runtime`]: https://github.com/iced-rs/iced/tree/0.14/runtime use crate::core::input_method; -use std::hash::DefaultHasher; -use std::hash::Hash; -use std::hash::Hasher; use std::sync::Arc; use crate::core::keyboard; @@ -14,7 +11,6 @@ use crate::core::theme; use crate::core::touch; use crate::core::window; use crate::core::{Event, Point, Size}; -use iced_futures::core::event::PlatformSpecific; use winit::dpi::PhysicalPosition; use winit::event::ButtonSource; use winit::event::ElementState; @@ -27,7 +23,7 @@ use winit::keyboard::SmolStr; pub fn window_attributes( settings: window::Settings, title: &str, - scale_factor: f64, + _scale_factor: f64, primary_monitor: Option, _id: Option, ) -> winit::window::WindowAttributes { @@ -396,8 +392,8 @@ pub fn window_event( Ime::Commit(content) => input_method::Event::Commit(content), Ime::Disabled => input_method::Event::Closed, Ime::DeleteSurrounding { - before_bytes, - after_bytes, + before_bytes: _, + after_bytes: _, } => todo!(), })), WindowEvent::Focused(focused) => Some(Event::Window(if focused { @@ -411,7 +407,7 @@ pub fn window_event( WindowEvent::DragDropped { paths, .. } => { Some(Event::Window(window::Event::FileDropped(paths.clone()))) } - WindowEvent::DragLeft { position } => { + WindowEvent::DragLeft { position: _ } => { Some(Event::Window(window::Event::FilesHoveredLeft)) } @@ -642,10 +638,6 @@ pub fn mouse_interaction( Interaction::AllScroll => winit_core::cursor::CursorIcon::AllScroll, Interaction::ZoomIn => winit_core::cursor::CursorIcon::ZoomIn, Interaction::ZoomOut => winit_core::cursor::CursorIcon::ZoomOut, - Interaction::Cell => winit_core::cursor::CursorIcon::Cell, - Interaction::Move => winit_core::cursor::CursorIcon::Move, - Interaction::Copy => winit_core::cursor::CursorIcon::Copy, - Interaction::Help => winit_core::cursor::CursorIcon::Help, Interaction::Hidden => { return None; } @@ -704,10 +696,10 @@ enum TouchInternal { /// /// [`winit`]: https://github.com/rust-windowing/winit /// [`iced`]: https://github.com/iced-rs/iced/tree/0.12 -pub fn touch_event( +fn touch_event( finger: FingerId, state: TouchInternal, - force: Option, + _force: Option, position: Option>, scale_factor: f64, ) -> touch::Event { @@ -1081,6 +1073,7 @@ pub fn physical_key( /// /// [`winit`]: https://github.com/rust-windowing/winit /// [`iced`]: https://github.com/iced-rs/iced/tree/0.12 +#[allow(deprecated)] // KeyCode::Super/Hyper/Turbo: legacy spec, no Meta variant in this enum pub fn key_code( key_code: winit::keyboard::KeyCode, ) -> Option { @@ -1285,6 +1278,7 @@ pub fn key_code( }) } +#[allow(deprecated)] // KeyCode::Super/Hyper/Turbo: legacy spec, no Meta variant in this enum pub fn winit_key_code( key_code: keyboard::key::Code, ) -> Option { @@ -1595,7 +1589,10 @@ pub fn resize_direction( } } +// Fields are passed through to winit via `IconProvider: AsAny` for potential +// downcast; they are not read directly here. #[derive(Debug)] +#[allow(dead_code)] pub struct RawImage(Vec, Size); impl IconProvider for RawImage {} impl From for winit_core::icon::Icon { diff --git a/winit/src/lib.rs b/winit/src/lib.rs index 735d73aa..9bc2db96 100644 --- a/winit/src/lib.rs +++ b/winit/src/lib.rs @@ -53,7 +53,6 @@ mod window; pub use clipboard::Clipboard; pub use error::Error; pub use proxy::Proxy; -use winit::dpi::LogicalSize; use winit::dpi::PhysicalPosition; use winit::dpi::PhysicalSize; @@ -158,7 +157,8 @@ where let (boot_sender, boot_receiver) = oneshot::channel(); let (control_sender, control_receiver) = mpsc::unbounded(); - let (system_theme_sender, system_theme_receiver) = oneshot::channel(); + // Sender side currently not wired to a producer; receiver gets default. + let (_system_theme_sender, system_theme_receiver) = oneshot::channel(); let instance = Box::pin(run_instance::

( program, @@ -179,9 +179,6 @@ where struct BootConfig { sender: oneshot::Sender<()>, - fonts: Vec>, - graphics_settings: graphics::Settings, - is_wayland: bool, } struct Runner { instance: std::pin::Pin>, @@ -191,9 +188,9 @@ where sender: mpsc::UnboundedSender>, receiver: mpsc::UnboundedReceiver, error: Option, - system_theme: Option>, + #[cfg(feature = "a11y")] control_sender: mpsc::UnboundedSender, - + #[cfg(feature = "a11y")] adapters: std::collections::HashMap, @@ -208,16 +205,13 @@ where context, boot: Some(BootConfig { sender: boot_sender, - fonts: settings.fonts, - graphics_settings, - is_wayland, }), id: settings.id, sender: event_sender, receiver: control_receiver, + #[cfg(feature = "a11y")] control_sender: control_sender.clone(), error: None, - system_theme: Some(system_theme_sender), #[cfg(feature = "a11y")] adapters: Default::default(), @@ -320,12 +314,7 @@ where event_loop: &dyn winit::event_loop::ActiveEventLoop, ) { // create initial window - let Some(BootConfig { - sender, - fonts, - graphics_settings, - is_wayland, - }) = self.boot.take() + let Some(BootConfig { sender }) = self.boot.take() else { return; }; @@ -363,6 +352,8 @@ where where F: Future, { + // TODO(yoda): migrate try_next → try_recv (futures-channel API change). + #[allow(deprecated)] fn process_event( &mut self, event_loop: &dyn winit::event_loop::ActiveEventLoop, @@ -636,10 +627,7 @@ where #[cfg(feature = "a11y")] fn init_adapter(&mut self, event_loop: &(dyn winit::event_loop::ActiveEventLoop + 'static), id: core::window::Id, window: Arc) { use crate::a11y::*; - use iced_accessibility::accesskit::{ - ActivationHandler, Node, NodeId, Role, - Tree, TreeUpdate, - }; + use iced_accessibility::accesskit_winit::Adapter; let node_id = @@ -693,6 +681,7 @@ where } } +#[allow(hidden_glob_reexports)] // intentional: internal Event shadows winit::event::Event from `pub use winit` enum Event { WindowCreated { id: window::Id, @@ -800,9 +789,6 @@ async fn run_instance

( > = None; let mut dnd_surface_id: Option = None; - #[cfg(feature = "a11y")] - let mut a11y_enabled = false; - #[cfg(all(feature = "linux-theme-detection", target_os = "linux"))] let mut system_theme = { let to_mode = |color_scheme| match color_scheme { @@ -1395,7 +1381,6 @@ async fn run_instance

( } let mut uis_stale = false; - let mut resized = false; for (id, window) in window_manager.iter_mut() { if skip && !window.resize_enabled { continue; @@ -1448,7 +1433,6 @@ async fn run_instance

( // FIXME what to do when we are stuck in a configure event/resize request loop // We don't have control over how winit handles this. window.resize_enabled = true; - resized = true; needs_redraw = true; let s = winit::dpi::Size::Logical( requested_size.cast(), @@ -1663,8 +1647,8 @@ async fn run_instance

( events.push((Some(id), conversion::a11y(action_request))); } #[cfg(feature = "a11y")] - Event::AccessibilityEnabled(enabled) => { - a11y_enabled = enabled; + Event::AccessibilityEnabled(_enabled) => { + // a11y enable signal currently unused at this layer } Event::PlatformSpecific(e) => { crate::platform_specific::handle_event( diff --git a/winit/src/platform_specific/mod.rs b/winit/src/platform_specific/mod.rs index 9b74ee9c..357fb1ec 100644 --- a/winit/src/platform_specific/mod.rs +++ b/winit/src/platform_specific/mod.rs @@ -1,14 +1,11 @@ //! Wayland specific shell //! -use std::{borrow::Cow, collections::HashMap, sync::Arc}; +use std::collections::HashMap; -#[cfg(all(feature = "cctk", target_os = "linux"))] -use cctk::sctk::reexports::client::Connection; -use iced_graphics::{Compositor, compositor}; +use iced_graphics::compositor; use iced_runtime::{ - core::{Vector, window}, - platform_specific, user_interface, + core::{Vector, window}, user_interface, }; use winit::raw_window_handle::HasWindowHandle; @@ -17,8 +14,6 @@ pub mod wayland; #[cfg(all(feature = "cctk", target_os = "linux"))] pub use wayland::*; -#[cfg(all(feature = "cctk", target_os = "linux"))] -use wayland_backend::client::Backend; use crate::{CreateCompositor, Program, WindowManager}; @@ -153,9 +148,12 @@ impl PlatformSpecific { ) -> Option> { #[cfg(all(feature = "cctk", target_os = "linux"))] { - return self.wayland.create_surface(); + self.wayland.create_surface() + } + #[cfg(not(all(feature = "cctk", target_os = "linux")))] + { + None } - None } pub(crate) fn update_surface_shm( diff --git a/winit/src/platform_specific/wayland/event_loop/control_flow.rs b/winit/src/platform_specific/wayland/event_loop/control_flow.rs deleted file mode 100644 index bc920ed4..00000000 --- a/winit/src/platform_specific/wayland/event_loop/control_flow.rs +++ /dev/null @@ -1,56 +0,0 @@ -/// Set by the user callback given to the [`EventLoop::run`] method. -/// -/// Indicates the desired behavior of the event loop after [`Event::RedrawEventsCleared`] is emitted. -/// -/// Defaults to [`Poll`]. -/// -/// ## Persistency -/// -/// Almost every change is persistent between multiple calls to the event loop closure within a -/// given run loop. The only exception to this is [`ExitWithCode`] which, once set, cannot be unset. -/// Changes are **not** persistent between multiple calls to `run_return` - issuing a new call will -/// reset the control flow to [`Poll`]. -/// -/// [`ExitWithCode`]: Self::ExitWithCode -/// [`Poll`]: Self::Poll -#[derive(Copy, Clone, Debug, PartialEq, Eq)] -pub enum ControlFlow { - /// When the current loop iteration finishes, immediately begin a new iteration regardless of - /// whether or not new events are available to process. - /// - /// ## Platform-specific - /// - /// - **Web:** Events are queued and usually sent when `requestAnimationFrame` fires but sometimes - /// the events in the queue may be sent before the next `requestAnimationFrame` callback, for - /// example when the scaling of the page has changed. This should be treated as an implementation - /// detail which should not be relied on. - Poll, - /// When the current loop iteration finishes, suspend the thread until another event arrives. - Wait, - /// When the current loop iteration finishes, suspend the thread until either another event - /// arrives or the given time is reached. - /// - /// Useful for implementing efficient timers. Applications which want to render at the display's - /// native refresh rate should instead use [`Poll`] and the VSync functionality of a graphics API - /// to reduce odds of missed frames. - /// - /// [`Poll`]: Self::Poll - WaitUntil(std::time::Instant), - /// Send a [`LoopDestroyed`] event and stop the event loop. This variant is *sticky* - once set, - /// `control_flow` cannot be changed from `ExitWithCode`, and any future attempts to do so will - /// result in the `control_flow` parameter being reset to `ExitWithCode`. - /// - /// The contained number will be used as exit code. The [`Exit`] constant is a shortcut for this - /// with exit code 0. - /// - /// ## Platform-specific - /// - /// - **Android / iOS / WASM:** The supplied exit code is unused. - /// - **Unix:** On most Unix-like platforms, only the 8 least significant bits will be used, - /// which can cause surprises with negative exit values (`-42` would end up as `214`). See - /// [`std::process::exit`]. - /// - /// [`LoopDestroyed`]: Event::LoopDestroyed - /// [`Exit`]: ControlFlow::Exit - ExitWithCode(i32), -} diff --git a/winit/src/platform_specific/wayland/event_loop/mod.rs b/winit/src/platform_specific/wayland/event_loop/mod.rs index 6c63f218..d21edcea 100644 --- a/winit/src/platform_specific/wayland/event_loop/mod.rs +++ b/winit/src/platform_specific/wayland/event_loop/mod.rs @@ -1,9 +1,5 @@ -pub mod control_flow; -pub mod proxy; pub mod state; -#[cfg(feature = "a11y")] -use crate::platform_specific::SurfaceIdWrapper; use crate::{ Control, futures::futures::channel::mpsc, @@ -30,7 +26,7 @@ use cctk::{ reexports::{ calloop::{self, EventLoop}, client::{ - ConnectError, Connection, Proxy, globals::registry_queue_init, + Connection, Proxy, globals::registry_queue_init, }, }, registry::RegistryState, @@ -43,8 +39,6 @@ use cctk::{ }; use raw_window_handle::HasDisplayHandle; use state::{FrameStatus, SctkWindow, send_event}; -#[cfg(feature = "a11y")] -use std::sync::{Arc, Mutex}; use std::{ collections::{HashMap, HashSet}, fmt::Debug, @@ -68,8 +62,8 @@ pub struct SctkEventLoop { pub(crate) state: SctkState, } +#[allow(dead_code)] // payloads kept for Debug; not inspected programmatically pub enum Error { - Connect(ConnectError), Calloop(calloop::Error), Global(GlobalError), NoDisplayHandle, diff --git a/winit/src/platform_specific/wayland/event_loop/proxy.rs b/winit/src/platform_specific/wayland/event_loop/proxy.rs deleted file mode 100644 index bdbc44a4..00000000 --- a/winit/src/platform_specific/wayland/event_loop/proxy.rs +++ /dev/null @@ -1,66 +0,0 @@ -use cctk::sctk::reexports::calloop; -use iced_futures::futures::{ - channel::mpsc, - task::{Context, Poll}, - Sink, -}; -use std::pin::Pin; - -/// An event loop proxy that implements `Sink`. -#[derive(Debug)] -pub struct Proxy { - raw: calloop::channel::Sender, -} - -impl Clone for Proxy { - fn clone(&self) -> Self { - Self { - raw: self.raw.clone(), - } - } -} - -impl Proxy { - /// Creates a new [`Proxy`] from an `EventLoopProxy`. - pub fn new(raw: calloop::channel::Sender) -> Self { - Self { raw } - } - /// send an event - pub fn send_event(&self, message: Message) { - let _ = self.raw.send(message); - } -} - -impl Sink for Proxy { - type Error = mpsc::SendError; - - fn poll_ready( - self: Pin<&mut Self>, - _cx: &mut Context<'_>, - ) -> Poll> { - Poll::Ready(Ok(())) - } - - fn start_send( - self: Pin<&mut Self>, - message: Message, - ) -> Result<(), Self::Error> { - let _ = self.raw.send(message); - - Ok(()) - } - - fn poll_flush( - self: Pin<&mut Self>, - _cx: &mut Context<'_>, - ) -> Poll> { - Poll::Ready(Ok(())) - } - - fn poll_close( - self: Pin<&mut Self>, - _cx: &mut Context<'_>, - ) -> Poll> { - Poll::Ready(Ok(())) - } -} diff --git a/winit/src/platform_specific/wayland/event_loop/state.rs b/winit/src/platform_specific/wayland/event_loop/state.rs index 9c9a4e11..8be7c639 100644 --- a/winit/src/platform_specific/wayland/event_loop/state.rs +++ b/winit/src/platform_specific/wayland/event_loop/state.rs @@ -29,12 +29,11 @@ use std::{ convert::Infallible, fmt::Debug, sync::{Arc, Mutex, atomic::AtomicU32}, - thread::panicking, time::Duration, }; use wayland_backend::client::ObjectId; use winit::{ - dpi::{LogicalPosition, LogicalSize}, + dpi::LogicalSize, platform::wayland::WindowExtWayland, }; @@ -50,7 +49,6 @@ use cctk::{ activation::{ActivationState, RequestData}, compositor::CompositorState, error::GlobalError, - globals::GlobalData, output::OutputState, reexports::{ calloop::{LoopHandle, timer::TimeoutAction}, @@ -231,9 +229,6 @@ impl CommonSurface { #[derive(Debug, Clone)] pub struct Common { pub(crate) fractional_scale: Option, - pub(crate) has_focus: bool, - pub(crate) ime_pos: LogicalPosition, - pub(crate) ime_size: LogicalSize, pub(crate) size: LogicalSize, pub(crate) requested_size: (Option, Option), pub(crate) wp_viewport: Option, @@ -243,9 +238,6 @@ impl Default for Common { fn default() -> Self { Self { fractional_scale: Default::default(), - has_focus: Default::default(), - ime_pos: Default::default(), - ime_size: Default::default(), size: LogicalSize::new(1, 1), requested_size: (None, None), wp_viewport: None, @@ -338,7 +330,6 @@ pub struct SctkPopupData { pub(crate) parent: PopupParent, pub(crate) toplevel: WlSurface, pub(crate) positioner: Arc, - pub(crate) grab: bool, } #[derive(Debug)] @@ -879,7 +870,6 @@ impl SctkState { parent: parent.clone(), toplevel: toplevel.clone(), positioner: positioner.clone(), - grab: settings.grab, }, last_configure: None, _pending_requests: Default::default(), @@ -1258,7 +1248,7 @@ impl SctkState { let timer = cctk::sctk::reexports::calloop::timer::Timer::from_duration(Duration::from_millis(30)); let queue_handle = self.queue_handle.clone(); _ = self.loop_handle.insert_source(timer, move |_, _, state| { - let Some((mut popup, attempt)) = state.pending_popup.take() else { + let Some((popup, attempt)) = state.pending_popup.take() else { return TimeoutAction::Drop; }; @@ -1521,7 +1511,6 @@ impl SctkState { SctkEvent::SubsurfaceEvent (crate::sctk_event::SubsurfaceEventVariant::Created{ parent_id, parent, - surface: subsurface, qh: self.queue_handle.clone(), common_surface, surface_id: subsurface_settings.id, @@ -1574,7 +1563,7 @@ impl SctkState { if let Some(manager) = self.corner_radius_manager.as_ref() { if let Some(w) = self.windows.iter_mut().find(|w| w.id == id) { let geo_size: LogicalSize = w.window.surface_size().cast::().to_logical(w.window.scale_factor()); - let half_min_dim = ((geo_size.width as u32).min(geo_size.height as u32) / 2); + let half_min_dim = (geo_size.width as u32).min(geo_size.height as u32) / 2 ; if let Some(radii) = v { let adjusted_radii = CornerRadius { diff --git a/winit/src/platform_specific/wayland/handlers/activation.rs b/winit/src/platform_specific/wayland/handlers/activation.rs index 6b03a8dd..ed5f2259 100644 --- a/winit/src/platform_specific/wayland/handlers/activation.rs +++ b/winit/src/platform_specific/wayland/handlers/activation.rs @@ -3,7 +3,6 @@ use cctk::sctk::{ delegate_activation, reexports::client::protocol::{wl_seat::WlSeat, wl_surface::WlSurface}, }; -use iced_futures::futures::channel::oneshot::Sender; use crate::platform_specific::wayland::event_loop::state::SctkState; diff --git a/winit/src/platform_specific/wayland/handlers/seat/seat.rs b/winit/src/platform_specific/wayland/handlers/seat/seat.rs index 2901ce8e..b0fe43f4 100644 --- a/winit/src/platform_specific/wayland/handlers/seat/seat.rs +++ b/winit/src/platform_specific/wayland/handlers/seat/seat.rs @@ -18,7 +18,7 @@ impl SeatHandler for SctkState { fn new_seat( &mut self, _conn: &cctk::sctk::reexports::client::Connection, - qh: &cctk::sctk::reexports::client::QueueHandle, + _qh: &cctk::sctk::reexports::client::QueueHandle, seat: cctk::sctk::reexports::client::protocol::wl_seat::WlSeat, ) { self.sctk_events.push(SctkEvent::SeatEvent { diff --git a/winit/src/platform_specific/wayland/handlers/shell/corner_radius.rs b/winit/src/platform_specific/wayland/handlers/shell/corner_radius.rs index bd7d2409..67439671 100644 --- a/winit/src/platform_specific/wayland/handlers/shell/corner_radius.rs +++ b/winit/src/platform_specific/wayland/handlers/shell/corner_radius.rs @@ -1,17 +1,13 @@ -use cctk::{sctk, cosmic_protocols::{ - corner_radius::v1::client::{ +use cctk::{sctk, cosmic_protocols::corner_radius::v1::client::{ cosmic_corner_radius_manager_v1::CosmicCornerRadiusManagerV1, cosmic_corner_radius_toplevel_v1::CosmicCornerRadiusToplevelV1, - }, - overlap_notify::v1::client::zcosmic_overlap_notification_v1::ZcosmicOverlapNotificationV1, -}}; + }}; use sctk::reexports::{ client::{Connection, Dispatch, Proxy}, }; use crate::event_loop::state::SctkState; -use crate::platform_specific::wayland::SctkEvent; impl Dispatch for SctkState { fn event( @@ -31,7 +27,7 @@ impl > for SctkState { fn event( - state: &mut Self, + _state: &mut Self, _proxy: &CosmicCornerRadiusToplevelV1, event: ::Event, _data: &(), diff --git a/winit/src/platform_specific/wayland/mod.rs b/winit/src/platform_specific/wayland/mod.rs index 9b3a7ec0..e613e3b4 100644 --- a/winit/src/platform_specific/wayland/mod.rs +++ b/winit/src/platform_specific/wayland/mod.rs @@ -16,10 +16,9 @@ use cctk::sctk::reexports::client::protocol::wl_surface::WlSurface; use cctk::sctk::seat::keyboard::Modifiers; use cursor_icon::CursorIcon; use iced_futures::futures::channel::mpsc; -use iced_graphics::{Compositor, compositor}; +use iced_graphics::compositor; use iced_runtime::core::{Vector, window}; -use raw_window_handle::{DisplayHandle, HasDisplayHandle, HasWindowHandle}; -use raw_window_handle::{HasRawDisplayHandle, RawWindowHandle}; +use raw_window_handle::{HasDisplayHandle, HasWindowHandle, RawWindowHandle}; use sctk_event::SctkEvent; use std::{collections::HashMap, sync::Arc}; use subsurface_widget::{SubsurfaceInstance, SubsurfaceState}; @@ -106,7 +105,7 @@ impl PlatformSpecific { display: OwnedDisplayHandle, ) -> Self { self.wayland.winit_event_sender = Some(tx); - self.wayland.conn = match display.raw_display_handle() { + self.wayland.conn = match display.display_handle().map(|h| h.as_raw()) { Ok(raw_window_handle::RawDisplayHandle::Wayland( wayland_display_handle, )) => { @@ -189,12 +188,12 @@ impl WaylandSpecific { winit_event_sender, proxy, sender, - display_handle, - conn, + display_handle: _, + conn: _, surface_ids, modifiers, subsurface_state, - surface_subsurfaces, + surface_subsurfaces: _, } = self; match e { @@ -237,7 +236,7 @@ impl WaylandSpecific { &mut self, keep: F, ) { - self.surface_subsurfaces.retain(|k, v| keep(*k)) + self.surface_subsurfaces.retain(|k, _v| keep(*k)) } pub(crate) fn clear_subsurface_list(&mut self) { @@ -250,7 +249,7 @@ impl WaylandSpecific { wl_surface: &WlSurface, ) { let subsurfaces = crate::subsurface_widget::take_subsurfaces(); - let mut entry = self.surface_subsurfaces.entry(id); + let entry = self.surface_subsurfaces.entry(id); let surface_subsurfaces = entry.or_default(); let Some(subsurface_state) = self.subsurface_state.as_mut() else { return; diff --git a/winit/src/platform_specific/wayland/sctk_event.rs b/winit/src/platform_specific/wayland/sctk_event.rs index 3a1a0166..a11ebe66 100755 --- a/winit/src/platform_specific/wayland/sctk_event.rs +++ b/winit/src/platform_specific/wayland/sctk_event.rs @@ -4,7 +4,7 @@ use crate::{ SurfaceIdWrapper, UserInterfaces, wayland::{ conversion::{ - modifiers_to_native, pointer_axis_to_native, + modifiers_to_native, pointer_button_to_native, }, keymap::{self, keysym_to_key}, @@ -25,10 +25,9 @@ use iced_futures::{ }, }, }, - event, futures::{SinkExt, channel::mpsc}, }; -use iced_graphics::{Compositor, compositor}; +use iced_graphics::compositor; use iced_runtime::{ core::{ Point, @@ -40,9 +39,7 @@ use iced_runtime::{ user_interface, }; -use cctk::{ - cosmic_protocols::overlap_notify::v1::client::zcosmic_overlap_notification_v1, - sctk::{ +use cctk::sctk::{ output::OutputInfo, reexports::{ calloop::channel, @@ -67,11 +64,8 @@ use cctk::{ wlr_layer::{Layer, LayerSurfaceConfigure}, xdg::{popup::PopupConfigure, window::WindowConfigure}, }, - }, - wayland_client::protocol::wl_subsurface::WlSubsurface, -}; + }; use std::{ - any::Any, collections::HashMap, num::NonZeroU32, sync::{Arc, Mutex}, @@ -288,7 +282,6 @@ pub enum SubsurfaceEventVariant { Created { parent_id: window::Id, parent: WlSurface, - surface: WlSurface, qh: QueueHandle, common_surface: CommonSurface, surface_id: SurfaceId, @@ -510,7 +503,7 @@ impl SctkEvent { ), ), ), - SurfaceIdWrapper::Window(id) => { + SurfaceIdWrapper::Window(_id) => { Some(iced_runtime::core::Event::Window( window::Event::Unfocused, )) @@ -538,7 +531,7 @@ impl SctkEvent { ), ), ), - SurfaceIdWrapper::Subsurface(id) => None, + SurfaceIdWrapper::Subsurface(_id) => None, }) { events.push(( @@ -572,7 +565,7 @@ impl SctkEvent { ), ), ), - SurfaceIdWrapper::Window(id) => { + SurfaceIdWrapper::Window(_id) => { Some(iced_runtime::core::Event::Window( window::Event::Focused, )) @@ -1509,7 +1502,6 @@ impl SctkEvent { common, z, parent, - surface: _, qh, surface_id, display, diff --git a/winit/src/platform_specific/wayland/subsurface_widget.rs b/winit/src/platform_specific/wayland/subsurface_widget.rs index ed53d9ea..c09e2424 100644 --- a/winit/src/platform_specific/wayland/subsurface_widget.rs +++ b/winit/src/platform_specific/wayland/subsurface_widget.rs @@ -7,7 +7,6 @@ use crate::core::{ widget::{self, Widget}, }; use std::{ - borrow::BorrowMut, cell::RefCell, collections::HashMap, fmt::Debug, @@ -58,9 +57,7 @@ use wayland_protocols::wp::{ }; use winit::window::WindowId; -use crate::platform_specific::{ - SurfaceIdWrapper, event_loop::state::SctkState, -}; +use crate::platform_specific::event_loop::state::SctkState; #[derive(Debug)] pub struct Plane { @@ -410,7 +407,10 @@ impl SubsurfaceState { .unwrap(); canvas[0..width as usize * height as usize * 4].copy_from_slice(data); surface.damage_buffer(0, 0, width as i32, height as i32); - buffer.attach_to(&surface); + if let Err(err) = buffer.attach_to(&surface) { + log::warn!("failed to attach shm buffer to subsurface: {err}"); + return; + } surface.offset(offset.x as i32, offset.y as i32); wp_viewport.set_destination( (width as f64 / scale) as i32, @@ -623,7 +623,7 @@ impl Drop for SubsurfaceState { } #[derive(Clone, Debug)] -pub(crate) struct SubsurfaceInstance { +pub struct SubsurfaceInstance { pub(crate) wl_surface: WlSurface, pub(crate) wl_subsurface: WlSubsurface, pub(crate) wp_viewport: WpViewport, diff --git a/winit/src/platform_specific/wayland/winit_window.rs b/winit/src/platform_specific/wayland/winit_window.rs index 296d8b67..fd562a45 100644 --- a/winit/src/platform_specific/wayland/winit_window.rs +++ b/winit/src/platform_specific/wayland/winit_window.rs @@ -1,9 +1,9 @@ use crate::platform_specific::wayland::Action; use cctk::sctk::reexports::{ - calloop::{LoopHandle, channel}, + calloop::channel, client::{ Proxy, QueueHandle, - protocol::{wl_display::WlDisplay, wl_surface::WlSurface}, + protocol::wl_display::WlDisplay, }, }; use raw_window_handle::HandleError; @@ -91,7 +91,7 @@ impl winit::window::Window for SctkWinitWindow { } } - fn set_cursor_visible(&self, visible: bool) { + fn set_cursor_visible(&self, _visible: bool) { // TODO } @@ -203,35 +203,35 @@ impl winit::window::Window for SctkWinitWindow { // TODO refer to winit for implementation } - fn set_outer_position(&self, position: winit::dpi::Position) {} + fn set_outer_position(&self, _position: winit::dpi::Position) {} fn outer_size(&self) -> winit::dpi::PhysicalSize { // XXX not applicable to wrapped surfaces Default::default() } - fn set_min_surface_size(&self, min_size: Option) { + fn set_min_surface_size(&self, _min_size: Option) { // XXX not applicable to wrapped surfaces } - fn set_max_surface_size(&self, max_size: Option) { + fn set_max_surface_size(&self, _max_size: Option) { // XXX not applicable to wrapped surfaces } fn set_surface_resize_increments( &self, - increments: Option, + _increments: Option, ) { log::warn!( "`set_surface_resize_increments` is not implemented for Wayland" ) } - fn set_title(&self, title: &str) { + fn set_title(&self, _title: &str) { // XXX not applicable to wrapped surfaces } - fn set_transparent(&self, transparent: bool) { + fn set_transparent(&self, _transparent: bool) { todo!() } @@ -286,23 +286,23 @@ impl winit::window::Window for SctkWinitWindow { _ = self.tx.send(Action::SetImePurpose(purpose)); } - fn set_blur(&self, blur: bool) { + fn set_blur(&self, _blur: bool) { // TODO } - fn set_visible(&self, visible: bool) {} + fn set_visible(&self, _visible: bool) {} fn is_visible(&self) -> Option { None } - fn set_resizable(&self, resizable: bool) {} + fn set_resizable(&self, _resizable: bool) {} fn is_resizable(&self) -> bool { false } - fn set_enabled_buttons(&self, buttons: winit::window::WindowButtons) { + fn set_enabled_buttons(&self, _buttons: winit::window::WindowButtons) { // TODO v5 of xdg_shell. } @@ -310,7 +310,7 @@ impl winit::window::Window for SctkWinitWindow { WindowButtons::all() } - fn set_minimized(&self, minimized: bool) { + fn set_minimized(&self, _minimized: bool) { // XXX not applicable to the wrapped surfaces } @@ -319,7 +319,7 @@ impl winit::window::Window for SctkWinitWindow { None } - fn set_maximized(&self, maximized: bool) { + fn set_maximized(&self, _maximized: bool) { // XXX can't minimize the wrapped surfaces } @@ -330,7 +330,7 @@ impl winit::window::Window for SctkWinitWindow { fn set_fullscreen( &self, - fullscreen: Option, + _fullscreen: Option, ) { // XXX can't fullscreen the wrapped surfaces } @@ -340,7 +340,7 @@ impl winit::window::Window for SctkWinitWindow { None } - fn set_decorations(&self, decorations: bool) { + fn set_decorations(&self, _decorations: bool) { // XXX no decorations supported for the wrapped surfaces } @@ -348,26 +348,26 @@ impl winit::window::Window for SctkWinitWindow { false } - fn set_window_level(&self, level: winit::window::WindowLevel) {} + fn set_window_level(&self, _level: winit::window::WindowLevel) {} - fn set_window_icon(&self, window_icon: Option) {} + fn set_window_icon(&self, _window_icon: Option) {} fn focus_window(&self) {} fn request_user_attention( &self, - request_type: Option, + _request_type: Option, ) { // XXX can't request attention on wrapped surfaces } - fn set_theme(&self, theme: Option) {} + fn set_theme(&self, _theme: Option) {} fn theme(&self) -> Option { None } - fn set_content_protected(&self, protected: bool) {} + fn set_content_protected(&self, _protected: bool) {} fn title(&self) -> String { String::new() @@ -420,14 +420,14 @@ impl winit::window::Window for SctkWinitWindow { fn set_cursor_position( &self, - position: winit::dpi::Position, + _position: winit::dpi::Position, ) -> Result<(), winit::error::RequestError> { todo!() } fn set_cursor_grab( &self, - mode: winit::window::CursorGrabMode, + _mode: winit::window::CursorGrabMode, ) -> Result<(), winit::error::RequestError> { todo!() } @@ -438,7 +438,7 @@ impl winit::window::Window for SctkWinitWindow { fn request_ime_update( &self, - request: winit::window::ImeRequest, + _request: winit::window::ImeRequest, ) -> Result<(), winit::window::ImeRequestError> { todo!() } diff --git a/winit/src/proxy.rs b/winit/src/proxy.rs index a3e4e816..aabe15c3 100644 --- a/winit/src/proxy.rs +++ b/winit/src/proxy.rs @@ -8,7 +8,6 @@ use crate::futures::futures::{ use crate::graphics::shell; use crate::runtime::Action; use crate::runtime::window; -use std::hash::DefaultHasher; use std::pin::Pin; /// An event loop proxy with backpressure that implements `Sink`. @@ -34,7 +33,7 @@ impl Proxy { const MAX_SIZE: usize = 100; /// Creates a new [`Proxy`] from an `EventLoopProxy`. - pub fn new( + pub(crate) fn new( raw: winit::event_loop::EventLoopProxy, event_sender: mpsc::UnboundedSender>, ) -> (Self, impl Future) { diff --git a/winit/src/window.rs b/winit/src/window.rs index 87d35a5a..ecb2107a 100644 --- a/winit/src/window.rs +++ b/winit/src/window.rs @@ -14,7 +14,7 @@ use crate::core::text; use crate::core::theme::{self, Base}; use crate::core::time::Instant; use crate::core::{ - Color, Element, InputMethod, Padding, Point, Rectangle, Size, Text, Vector, + Color, InputMethod, Padding, Point, Rectangle, Size, Text, Vector, }; use crate::graphics::Compositor; use crate::program::{self, Program}; @@ -26,10 +26,6 @@ use winit::monitor::MonitorHandle; use std::collections::BTreeMap; use std::sync::Arc; -pub(crate) type ViewFn = Arc< - Box Option> + Send + Sync + 'static>, ->; - pub struct WindowManager where P: Program, @@ -325,6 +321,10 @@ where } } + // TODO(yoda): migrate to Window::request_ime_update(ImeRequest::*). + // Legacy set_ime_* still functional but deprecated; full migration + // requires ImeCapabilities + ImeRequestData reshape. + #[allow(deprecated)] fn enable_ime( &mut self, cursor: Rectangle, @@ -355,6 +355,7 @@ where } } + #[allow(deprecated)] // see TODO on enable_ime fn disable_ime(&mut self) { if self.ime_state.is_some() { self.raw.set_ime_allowed(false); diff --git a/winit/src/window/state.rs b/winit/src/window/state.rs index 98fdf9ee..1e16fc51 100644 --- a/winit/src/window/state.rs +++ b/winit/src/window/state.rs @@ -97,6 +97,7 @@ where self.ready = ready; } + #[cfg(feature = "a11y")] pub(crate) fn set_a11y_ready(&mut self, ready: bool) { self.a11y_ready = ready; }