summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Cory Forsstrom <cforsstrom18@gmail.com>2021-04-09 09:00:29 -0700
committerLibravatar Cory Forsstrom <cforsstrom18@gmail.com>2021-04-09 09:04:30 -0700
commit84c0c9bc7ab858793183560739c8fd6087e22f6e (patch)
tree3cc5a3d85c57847044580b802cfa6d0df5948d6e
parent6f6f1d82e822983941f3b3ba1c6d93df3e98b8c3 (diff)
downloadiced-84c0c9bc7ab858793183560739c8fd6087e22f6e.tar.gz
iced-84c0c9bc7ab858793183560739c8fd6087e22f6e.tar.bz2
iced-84c0c9bc7ab858793183560739c8fd6087e22f6e.zip
use Mode::Hidden instead
-rw-r--r--glutin/src/application.rs1
-rw-r--r--src/application.rs12
-rw-r--r--src/window/mode.rs3
-rw-r--r--winit/src/application.rs8
-rw-r--r--winit/src/application/state.rs14
-rw-r--r--winit/src/conversion.rs10
-rw-r--r--winit/src/mode.rs3
-rw-r--r--winit/src/settings.rs3
8 files changed, 19 insertions, 35 deletions
diff --git a/glutin/src/application.rs b/glutin/src/application.rs
index 5d72ee41..79fcf745 100644
--- a/glutin/src/application.rs
+++ b/glutin/src/application.rs
@@ -55,7 +55,6 @@ where
let builder = settings.window.into_builder(
&application.title(),
application.mode(),
- application.visible(),
event_loop.primary_monitor(),
);
diff --git a/src/application.rs b/src/application.rs
index 317f9801..ee532e0b 100644
--- a/src/application.rs
+++ b/src/application.rs
@@ -191,13 +191,6 @@ pub trait Application: Sized {
false
}
- /// Returns whether the [`Application`] should be visible or not
- ///
- /// By default, it returns `true`.
- fn visible(&self) -> bool {
- true
- }
-
/// Runs the [`Application`].
///
/// On native platforms, this method will take control of the current thread
@@ -284,6 +277,7 @@ where
match self.0.mode() {
window::Mode::Windowed => iced_winit::Mode::Windowed,
window::Mode::Fullscreen => iced_winit::Mode::Fullscreen,
+ window::Mode::Hidden => iced_winit::Mode::Hidden,
}
}
@@ -302,10 +296,6 @@ where
fn should_exit(&self) -> bool {
self.0.should_exit()
}
-
- fn visible(&self) -> bool {
- self.0.visible()
- }
}
#[cfg(target_arch = "wasm32")]
diff --git a/src/window/mode.rs b/src/window/mode.rs
index 37464711..fdce8e23 100644
--- a/src/window/mode.rs
+++ b/src/window/mode.rs
@@ -6,4 +6,7 @@ pub enum Mode {
/// The application takes the whole screen of its current monitor.
Fullscreen,
+
+ /// The application is hidden
+ Hidden,
}
diff --git a/winit/src/application.rs b/winit/src/application.rs
index e73f3df1..106d5218 100644
--- a/winit/src/application.rs
+++ b/winit/src/application.rs
@@ -98,13 +98,6 @@ pub trait Application: Program<Clipboard = Clipboard> {
fn should_exit(&self) -> bool {
false
}
-
- /// Returns whether the [`Application`] should be visible or not
- ///
- /// By default, it returns `true`.
- fn visible(&self) -> bool {
- true
- }
}
/// Runs an [`Application`] with an executor, compositor, and the provided
@@ -152,7 +145,6 @@ where
.into_builder(
&application.title(),
application.mode(),
- application.visible(),
event_loop.primary_monitor(),
)
.build(&event_loop)
diff --git a/winit/src/application/state.rs b/winit/src/application/state.rs
index d157211a..b54d3aed 100644
--- a/winit/src/application/state.rs
+++ b/winit/src/application/state.rs
@@ -12,7 +12,6 @@ pub struct State<A: Application> {
mode: Mode,
background_color: Color,
scale_factor: f64,
- visible: bool,
viewport: Viewport,
viewport_version: usize,
cursor_position: winit::dpi::PhysicalPosition<f64>,
@@ -27,7 +26,6 @@ impl<A: Application> State<A> {
let mode = application.mode();
let background_color = application.background_color();
let scale_factor = application.scale_factor();
- let visible = application.visible();
let viewport = {
let physical_size = window.inner_size();
@@ -43,7 +41,6 @@ impl<A: Application> State<A> {
mode,
background_color,
scale_factor,
- visible,
viewport,
viewport_version: 0,
// TODO: Encode cursor availability in the type-system
@@ -185,6 +182,8 @@ impl<A: Application> State<A> {
new_mode,
));
+ window.set_visible(conversion::visible(new_mode));
+
self.mode = new_mode;
}
@@ -204,14 +203,5 @@ impl<A: Application> State<A> {
self.scale_factor = new_scale_factor;
}
-
- // Update window visibility
- let new_visible = application.visible();
-
- if self.visible != new_visible {
- window.set_visible(new_visible);
-
- self.visible = new_visible;
- }
}
}
diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs
index 0fa27413..b850a805 100644
--- a/winit/src/conversion.rs
+++ b/winit/src/conversion.rs
@@ -141,13 +141,21 @@ pub fn fullscreen(
mode: Mode,
) -> Option<winit::window::Fullscreen> {
match mode {
- Mode::Windowed => None,
+ Mode::Windowed | Mode::Hidden => None,
Mode::Fullscreen => {
Some(winit::window::Fullscreen::Borderless(monitor))
}
}
}
+/// Converts a [`Mode`] to a visibility flag.
+pub fn visible(mode: Mode) -> bool {
+ match mode {
+ Mode::Windowed | Mode::Fullscreen => true,
+ Mode::Hidden => false,
+ }
+}
+
/// Converts a `MouseCursor` from [`iced_native`] to a [`winit`] cursor icon.
///
/// [`winit`]: https://github.com/rust-windowing/winit
diff --git a/winit/src/mode.rs b/winit/src/mode.rs
index 37464711..fdce8e23 100644
--- a/winit/src/mode.rs
+++ b/winit/src/mode.rs
@@ -6,4 +6,7 @@ pub enum Mode {
/// The application takes the whole screen of its current monitor.
Fullscreen,
+
+ /// The application is hidden
+ Hidden,
}
diff --git a/winit/src/settings.rs b/winit/src/settings.rs
index 56be1e07..663fa07a 100644
--- a/winit/src/settings.rs
+++ b/winit/src/settings.rs
@@ -66,7 +66,6 @@ impl Window {
self,
title: &str,
mode: Mode,
- visible: bool,
primary_monitor: Option<MonitorHandle>,
) -> WindowBuilder {
let mut window_builder = WindowBuilder::new();
@@ -82,7 +81,7 @@ impl Window {
.with_window_icon(self.icon)
.with_always_on_top(self.always_on_top)
.with_fullscreen(conversion::fullscreen(primary_monitor, mode))
- .with_visible(visible);
+ .with_visible(conversion::visible(mode));
if let Some((width, height)) = self.min_size {
window_builder = window_builder