Skip to content

Commit af5924e

Browse files
authored
fix: Ensure windows settings are initialized when the window is created (neovide#2619)
* Ensure input_macos_option_key_is_meta is initialized after the window is created * Initialize fullscreen when the window is created * Clean up the fullscreen toggling code
1 parent 3e787db commit af5924e

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

src/window/window_wrapper.rs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ pub struct WinitWindowWrapper {
6868
keyboard_manager: KeyboardManager,
6969
mouse_manager: MouseManager,
7070
title: String,
71-
fullscreen: bool,
7271
font_changed_last_frame: bool,
7372
saved_inner_size: dpi::PhysicalSize<u32>,
7473
saved_grid_size: Option<GridSize<u32>>,
@@ -99,7 +98,6 @@ impl WinitWindowWrapper {
9998
keyboard_manager: KeyboardManager::new(),
10099
mouse_manager: MouseManager::new(),
101100
title: String::from("Neovide"),
102-
fullscreen: false,
103101
font_changed_last_frame: false,
104102
saved_inner_size,
105103
saved_grid_size: None,
@@ -122,18 +120,16 @@ impl WinitWindowWrapper {
122120
}
123121
}
124122

125-
pub fn toggle_fullscreen(&mut self) {
123+
pub fn set_fullscreen(&mut self, fullscreen: bool) {
126124
if let Some(skia_renderer) = &self.skia_renderer {
127125
let window = skia_renderer.window();
128-
if self.fullscreen {
129-
window.set_fullscreen(None);
130-
} else {
126+
if fullscreen {
131127
let handle = window.current_monitor();
132128
window.set_fullscreen(Some(Fullscreen::Borderless(handle)));
129+
} else {
130+
window.set_fullscreen(None);
133131
}
134132
}
135-
136-
self.fullscreen = !self.fullscreen;
137133
}
138134

139135
#[cfg(target_os = "macos")]
@@ -206,9 +202,7 @@ impl WinitWindowWrapper {
206202
self.requested_lines = lines.map(|v| v.try_into().unwrap());
207203
}
208204
WindowSettingsChanged::Fullscreen(fullscreen) => {
209-
if self.fullscreen != fullscreen {
210-
self.toggle_fullscreen();
211-
}
205+
self.set_fullscreen(fullscreen);
212206
}
213207
WindowSettingsChanged::InputIme(ime_enabled) => {
214208
self.set_ime(ime_enabled);
@@ -483,6 +477,9 @@ impl WinitWindowWrapper {
483477
theme,
484478
transparency,
485479
window_blurred,
480+
fullscreen,
481+
#[cfg(target_os = "macos")]
482+
input_macos_option_key_is_meta,
486483
..
487484
} = SETTINGS.get::<WindowSettings>();
488485

@@ -567,6 +564,10 @@ impl WinitWindowWrapper {
567564
);
568565

569566
window.set_blur(window_blurred && transparency < 1.0);
567+
if fullscreen {
568+
let handle = window.current_monitor();
569+
window.set_fullscreen(Some(Fullscreen::Borderless(handle)));
570+
}
570571

571572
match theme.as_str() {
572573
"light" => set_background("light"),
@@ -592,6 +593,8 @@ impl WinitWindowWrapper {
592593

593594
self.ui_state = UIState::FirstFrame;
594595
self.skia_renderer = Some(skia_renderer);
596+
#[cfg(target_os = "macos")]
597+
self.set_macos_option_as_meta(input_macos_option_key_is_meta);
595598
}
596599

597600
fn handle_draw_commands(&mut self, batch: Vec<DrawCommand>) {

0 commit comments

Comments
 (0)