summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/application.rs23
-rw-r--r--src/lib.rs1
-rw-r--r--src/settings.rs28
-rw-r--r--src/window.rs6
-rw-r--r--src/window/mode.rs (renamed from native/src/window/mode.rs)0
-rw-r--r--src/window/settings.rs22
6 files changed, 54 insertions, 26 deletions
diff --git a/src/application.rs b/src/application.rs
index 5ea64ba8..b940cc17 100644
--- a/src/application.rs
+++ b/src/application.rs
@@ -1,4 +1,4 @@
-use crate::{Command, Element, Settings, Subscription};
+use crate::{window, Command, Element, Settings, Subscription};
/// An interactive cross-platform application.
///
@@ -138,6 +138,20 @@ pub trait Application: Sized {
/// [`Application`]: trait.Application.html
fn view(&mut self) -> Element<'_, Self::Message>;
+ /// Returns the current [`Application`] mode.
+ ///
+ /// The runtime will automatically transition your application if a new mode
+ /// is returned.
+ ///
+ /// Currently, the mode only has an effect in native platforms.
+ ///
+ /// By default, an application will run in windowed mode.
+ ///
+ /// [`Application`]: trait.Application.html
+ fn mode(&self) -> window::Mode {
+ window::Mode::Windowed
+ }
+
/// Runs the [`Application`].
///
/// This method will take control of the current thread and __will NOT
@@ -183,6 +197,13 @@ where
self.0.title()
}
+ fn mode(&self) -> iced_winit::Mode {
+ match self.0.mode() {
+ window::Mode::Windowed => iced_winit::Mode::Windowed,
+ window::Mode::Fullscreen => iced_winit::Mode::Fullscreen,
+ }
+ }
+
fn update(&mut self, message: Self::Message) -> Command<Self::Message> {
self.0.update(message)
}
diff --git a/src/lib.rs b/src/lib.rs
index 1ef11378..759dea2f 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -189,6 +189,7 @@ mod platform;
mod sandbox;
pub mod settings;
+pub mod window;
pub use application::Application;
pub use platform::*;
diff --git a/src/settings.rs b/src/settings.rs
index e20edc97..77c7e0b9 100644
--- a/src/settings.rs
+++ b/src/settings.rs
@@ -1,14 +1,15 @@
//! Configure your application.
+use crate::window;
/// The settings of an application.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub struct Settings {
- /// The [`Window`] settings.
+ /// The window settings.
///
/// They will be ignored on the Web.
///
/// [`Window`]: struct.Window.html
- pub window: Window,
+ pub window: window::Settings,
/// The bytes of the font that will be used by default.
///
@@ -17,29 +18,6 @@ pub struct Settings {
pub default_font: Option<&'static [u8]>,
}
-/// The window settings of an application.
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub struct Window {
- /// The size of the window.
- pub size: (u32, u32),
-
- /// Whether the window should be resizable or not.
- pub resizable: bool,
-
- /// Whether the window should have a border, a title bar, etc. or not.
- pub decorations: bool,
-}
-
-impl Default for Window {
- fn default() -> Window {
- Window {
- size: (1024, 768),
- resizable: true,
- decorations: true,
- }
- }
-}
-
#[cfg(not(target_arch = "wasm32"))]
impl From<Settings> for iced_winit::Settings {
fn from(settings: Settings) -> iced_winit::Settings {
diff --git a/src/window.rs b/src/window.rs
new file mode 100644
index 00000000..54ea2a02
--- /dev/null
+++ b/src/window.rs
@@ -0,0 +1,6 @@
+//! Configure the window of your application in native platforms.
+mod mode;
+mod settings;
+
+pub use mode::Mode;
+pub use settings::Settings;
diff --git a/native/src/window/mode.rs b/src/window/mode.rs
index 37464711..37464711 100644
--- a/native/src/window/mode.rs
+++ b/src/window/mode.rs
diff --git a/src/window/settings.rs b/src/window/settings.rs
new file mode 100644
index 00000000..a31d2af2
--- /dev/null
+++ b/src/window/settings.rs
@@ -0,0 +1,22 @@
+/// The window settings of an application.
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub struct Settings {
+ /// The size of the window.
+ pub size: (u32, u32),
+
+ /// Whether the window should be resizable or not.
+ pub resizable: bool,
+
+ /// Whether the window should have a border, a title bar, etc. or not.
+ pub decorations: bool,
+}
+
+impl Default for Settings {
+ fn default() -> Settings {
+ Settings {
+ size: (1024, 768),
+ resizable: true,
+ decorations: true,
+ }
+ }
+}