aboutsummaryrefslogtreecommitdiff
path: root/src/window.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/window.rs')
-rw-r--r--src/window.rs40
1 files changed, 35 insertions, 5 deletions
diff --git a/src/window.rs b/src/window.rs
index b471bbd2..b6384600 100644
--- a/src/window.rs
+++ b/src/window.rs
@@ -28,7 +28,7 @@ use glutin::{
use image::ImageFormat;
use crate::cli::Options;
-use crate::config::{Decorations, WindowConfig};
+use crate::config::{Decorations, StartupMode, WindowConfig};
#[cfg(windows)]
static WINDOW_ICON: &'static [u8] = include_bytes!("../extra/windows/alacritty.ico");
@@ -159,7 +159,7 @@ impl Window {
// Maximize window after mapping in X11
#[cfg(not(any(target_os = "macos", windows)))]
{
- if event_loop.is_x11() && window_config.start_maximized() {
+ if event_loop.is_x11() && window_config.startup_mode() == StartupMode::Maximized {
window.set_maximized(true);
}
}
@@ -175,6 +175,19 @@ impl Window {
window.set_position(logical);
}
+ if let StartupMode::Fullscreen = window_config.startup_mode() {
+ let current_monitor = window.get_current_monitor();
+ window.set_fullscreen(Some(current_monitor));
+ }
+
+ #[cfg(target_os = "macos")]
+ {
+ if let StartupMode::SimpleFullscreen = window_config.startup_mode() {
+ use glutin::os::macos::WindowExt;
+ window.set_simple_fullscreen(true);
+ }
+ }
+
// Text cursor
window.set_cursor(MouseCursor::Text);
@@ -280,7 +293,7 @@ impl Window {
.with_visibility(false)
.with_transparency(true)
.with_decorations(decorations)
- .with_maximized(window_config.start_maximized())
+ .with_maximized(window_config.startup_mode() == StartupMode::Maximized)
// X11
.with_class(class.into(), DEFAULT_NAME.into())
// Wayland
@@ -305,7 +318,7 @@ impl Window {
.with_visibility(cfg!(windows))
.with_decorations(decorations)
.with_transparency(true)
- .with_maximized(window_config.start_maximized())
+ .with_maximized(window_config.startup_mode() == StartupMode::Maximized)
.with_window_icon(Some(icon))
}
@@ -321,7 +334,7 @@ impl Window {
.with_title(title)
.with_visibility(false)
.with_transparency(true)
- .with_maximized(window_config.start_maximized());
+ .with_maximized(window_config.startup_mode() == StartupMode::Maximized);
match window_config.decorations() {
Decorations::Full => window,
@@ -382,6 +395,23 @@ impl Window {
self.window().hide();
}
+ /// Fullscreens the window on the current monitor.
+ pub fn set_fullscreen(&self, fullscreen: bool) {
+ let glutin_window = self.window();
+ if fullscreen {
+ let current_monitor = glutin_window.get_current_monitor();
+ glutin_window.set_fullscreen(Some(current_monitor));
+ } else {
+ glutin_window.set_fullscreen(None);
+ }
+ }
+
+ #[cfg(target_os = "macos")]
+ pub fn set_simple_fullscreen(&self, fullscreen: bool) {
+ use glutin::os::macos::WindowExt;
+ self.window().set_simple_fullscreen(fullscreen);
+ }
+
fn window(&self) -> &glutin::Window {
self.windowed_context.window()
}