Merge pull request #1738 from nicoburns/update-winit-0.28
Update to winit 0.28
This commit is contained in:
commit
c61a4cc21c
11 changed files with 78 additions and 45 deletions
|
|
@ -23,14 +23,15 @@ wayland-dlopen = ["winit/wayland-dlopen"]
|
|||
wayland-csd-adwaita = ["winit/wayland-csd-adwaita"]
|
||||
|
||||
[dependencies]
|
||||
window_clipboard = "0.2"
|
||||
window_clipboard = "0.3"
|
||||
log = "0.4"
|
||||
thiserror = "1.0"
|
||||
raw-window-handle = "0.5"
|
||||
|
||||
[dependencies.winit]
|
||||
version = "0.27"
|
||||
version = "0.28"
|
||||
git = "https://github.com/iced-rs/winit.git"
|
||||
rev = "940457522e9fb9f5dac228b0ecfafe0138b4048c"
|
||||
rev = "ac1ddfe0bd870910b3aa64a18d386fdd55b30a1d"
|
||||
default-features = false
|
||||
|
||||
[dependencies.iced_runtime]
|
||||
|
|
|
|||
|
|
@ -794,8 +794,8 @@ pub fn run_command<A, E>(
|
|||
window::Action::GainFocus => {
|
||||
window.focus_window();
|
||||
}
|
||||
window::Action::ChangeAlwaysOnTop(on_top) => {
|
||||
window.set_always_on_top(on_top);
|
||||
window::Action::ChangeLevel(level) => {
|
||||
window.set_window_level(conversion::window_level(level));
|
||||
}
|
||||
window::Action::FetchId(tag) => {
|
||||
proxy
|
||||
|
|
|
|||
|
|
@ -140,6 +140,19 @@ pub fn window_event(
|
|||
}
|
||||
}
|
||||
|
||||
/// Converts a [`window::Level`] to a [`winit`] window level.
|
||||
///
|
||||
/// [`winit`]: https://github.com/rust-windowing/winit
|
||||
pub fn window_level(level: window::Level) -> winit::window::WindowLevel {
|
||||
match level {
|
||||
window::Level::Normal => winit::window::WindowLevel::Normal,
|
||||
window::Level::AlwaysOnBottom => {
|
||||
winit::window::WindowLevel::AlwaysOnBottom
|
||||
}
|
||||
window::Level::AlwaysOnTop => winit::window::WindowLevel::AlwaysOnTop,
|
||||
}
|
||||
}
|
||||
|
||||
/// Converts a [`Position`] to a [`winit`] logical position for a given monitor.
|
||||
///
|
||||
/// [`winit`]: https://github.com/rust-windowing/winit
|
||||
|
|
|
|||
|
|
@ -25,9 +25,10 @@
|
|||
clippy::from_over_into,
|
||||
clippy::needless_borrow,
|
||||
clippy::new_without_default,
|
||||
clippy::useless_conversion
|
||||
clippy::useless_conversion,
|
||||
unsafe_code
|
||||
)]
|
||||
#![forbid(rust_2018_idioms, unsafe_code)]
|
||||
#![forbid(rust_2018_idioms)]
|
||||
#![allow(clippy::inherent_to_string, clippy::type_complexity)]
|
||||
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
|
||||
pub use iced_graphics as graphics;
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ mod platform;
|
|||
pub use platform::PlatformSpecific;
|
||||
|
||||
use crate::conversion;
|
||||
use crate::core::window::Icon;
|
||||
use crate::core::window::{Icon, Level};
|
||||
use crate::Position;
|
||||
|
||||
use winit::monitor::MonitorHandle;
|
||||
|
|
@ -81,8 +81,8 @@ pub struct Window {
|
|||
/// Whether the window should be transparent.
|
||||
pub transparent: bool,
|
||||
|
||||
/// Whether the window will always be on top of other windows.
|
||||
pub always_on_top: bool,
|
||||
/// The window [`Level`].
|
||||
pub level: Level,
|
||||
|
||||
/// The window icon, which is also usually used in the taskbar
|
||||
pub icon: Option<Icon>,
|
||||
|
|
@ -102,7 +102,7 @@ impl fmt::Debug for Window {
|
|||
.field("resizable", &self.resizable)
|
||||
.field("decorations", &self.decorations)
|
||||
.field("transparent", &self.transparent)
|
||||
.field("always_on_top", &self.always_on_top)
|
||||
.field("level", &self.level)
|
||||
.field("icon", &self.icon.is_some())
|
||||
.field("platform_specific", &self.platform_specific)
|
||||
.finish()
|
||||
|
|
@ -128,7 +128,7 @@ impl Window {
|
|||
.with_decorations(self.decorations)
|
||||
.with_transparent(self.transparent)
|
||||
.with_window_icon(self.icon.and_then(conversion::icon))
|
||||
.with_always_on_top(self.always_on_top)
|
||||
.with_window_level(conversion::window_level(self.level))
|
||||
.with_visible(self.visible);
|
||||
|
||||
if let Some(position) = conversion::position(
|
||||
|
|
@ -157,7 +157,9 @@ impl Window {
|
|||
target_os = "openbsd"
|
||||
))]
|
||||
{
|
||||
use ::winit::platform::unix::WindowBuilderExtUnix;
|
||||
// `with_name` is available on both `WindowBuilderExtWayland` and `WindowBuilderExtX11` and they do
|
||||
// exactly the same thing. We arbitrarily choose `WindowBuilderExtWayland` here.
|
||||
use ::winit::platform::wayland::WindowBuilderExtWayland;
|
||||
|
||||
if let Some(id) = _id {
|
||||
window_builder = window_builder.with_name(id.clone(), id);
|
||||
|
|
@ -167,11 +169,11 @@ impl Window {
|
|||
#[cfg(target_os = "windows")]
|
||||
{
|
||||
use winit::platform::windows::WindowBuilderExtWindows;
|
||||
|
||||
if let Some(parent) = self.platform_specific.parent {
|
||||
window_builder = window_builder.with_parent_window(parent);
|
||||
#[allow(unsafe_code)]
|
||||
unsafe {
|
||||
window_builder = window_builder
|
||||
.with_parent_window(self.platform_specific.parent);
|
||||
}
|
||||
|
||||
window_builder = window_builder
|
||||
.with_drag_and_drop(self.platform_specific.drag_and_drop);
|
||||
}
|
||||
|
|
@ -205,7 +207,7 @@ impl Default for Window {
|
|||
resizable: true,
|
||||
decorations: true,
|
||||
transparent: false,
|
||||
always_on_top: false,
|
||||
level: Level::default(),
|
||||
icon: None,
|
||||
platform_specific: Default::default(),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
//! Platform specific settings for Windows.
|
||||
use raw_window_handle::RawWindowHandle;
|
||||
|
||||
/// The platform specific window settings of an application.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub struct PlatformSpecific {
|
||||
/// Parent window
|
||||
pub parent: Option<winit::platform::windows::HWND>,
|
||||
pub parent: Option<RawWindowHandle>,
|
||||
|
||||
/// Drag and drop support
|
||||
pub drag_and_drop: bool,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue