From 8c4d9798eb17c15d0d1d4e0e2d3c2de7da7d3484 Mon Sep 17 00:00:00 2001 From: Timon Date: Sun, 15 Mar 2026 10:42:42 +0000 Subject: [PATCH 1/4] Desktop: Fix restart dialog on Mac --- editor/src/messages/dialog/dialog_message.rs | 4 +++- .../messages/dialog/dialog_message_handler.rs | 6 ++---- .../preferences_dialog_message_handler.rs | 5 +++-- .../simple_dialogs/confirm_restart_dialog.rs | 4 ++-- .../preferences/preferences_message_handler.rs | 18 ++++++++++-------- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/editor/src/messages/dialog/dialog_message.rs b/editor/src/messages/dialog/dialog_message.rs index c3b04e7ffc..df52cce6b4 100644 --- a/editor/src/messages/dialog/dialog_message.rs +++ b/editor/src/messages/dialog/dialog_message.rs @@ -37,5 +37,7 @@ pub enum DialogMessage { }, RequestNewDocumentDialog, RequestPreferencesDialog, - RequestConfirmRestartDialog, + RequestConfirmRestartDialog { + preferences_requiring_restart: Vec, + }, } diff --git a/editor/src/messages/dialog/dialog_message_handler.rs b/editor/src/messages/dialog/dialog_message_handler.rs index 1621de1c3e..29009bfdaa 100644 --- a/editor/src/messages/dialog/dialog_message_handler.rs +++ b/editor/src/messages/dialog/dialog_message_handler.rs @@ -136,11 +136,9 @@ impl MessageHandler> for DialogMessageHa self.on_dismiss = Some(PreferencesDialogMessage::Confirm.into()); self.preferences_dialog.send_dialog_to_frontend(responses, preferences); } - DialogMessage::RequestConfirmRestartDialog => { + DialogMessage::RequestConfirmRestartDialog { preferences_requiring_restart } => { self.on_dismiss = Some(DialogMessage::Close.into()); - let dialog = ConfirmRestartDialog { - changed_settings: vec!["Disable UI Acceleration".into()], - }; + let dialog = ConfirmRestartDialog { preferences_requiring_restart }; dialog.send_dialog_to_frontend(responses); } } diff --git a/editor/src/messages/dialog/preferences_dialog/preferences_dialog_message_handler.rs b/editor/src/messages/dialog/preferences_dialog/preferences_dialog_message_handler.rs index d2850fbfd2..99fa880289 100644 --- a/editor/src/messages/dialog/preferences_dialog/preferences_dialog_message_handler.rs +++ b/editor/src/messages/dialog/preferences_dialog/preferences_dialog_message_handler.rs @@ -28,9 +28,10 @@ impl MessageHandler { if let Some(unmodified_preferences) = &self.unmodified_preferences - && unmodified_preferences.needs_restart(preferences) + && let preferences_requiring_restart = unmodified_preferences.preferences_requiring_restart(preferences) + && !preferences_requiring_restart.is_empty() { - responses.add(DialogMessage::RequestConfirmRestartDialog); + responses.add(DialogMessage::RequestConfirmRestartDialog { preferences_requiring_restart }); } else { responses.add(DialogMessage::Close); } diff --git a/editor/src/messages/dialog/simple_dialogs/confirm_restart_dialog.rs b/editor/src/messages/dialog/simple_dialogs/confirm_restart_dialog.rs index 5cf55b4874..7f067e7b8b 100644 --- a/editor/src/messages/dialog/simple_dialogs/confirm_restart_dialog.rs +++ b/editor/src/messages/dialog/simple_dialogs/confirm_restart_dialog.rs @@ -3,7 +3,7 @@ use crate::messages::prelude::*; /// A dialog for confirming the restart of the application when changing a preference that requires a restart to take effect. pub struct ConfirmRestartDialog { - pub changed_settings: Vec, + pub preferences_requiring_restart: Vec, } impl DialogLayoutHolder for ConfirmRestartDialog { @@ -30,7 +30,7 @@ impl DialogLayoutHolder for ConfirmRestartDialog { impl LayoutHolder for ConfirmRestartDialog { fn layout(&self) -> Layout { - let changed_settings = "• ".to_string() + &self.changed_settings.join("\n• "); + let changed_settings = "• ".to_string() + &self.preferences_requiring_restart.join("\n• "); Layout(vec![ LayoutGroup::row(vec![TextLabel::new("Restart to apply changes?").bold(true).multiline(true).widget_instance()]), diff --git a/editor/src/messages/preferences/preferences_message_handler.rs b/editor/src/messages/preferences/preferences_message_handler.rs index 523515debc..fa9fdfdd6d 100644 --- a/editor/src/messages/preferences/preferences_message_handler.rs +++ b/editor/src/messages/preferences/preferences_message_handler.rs @@ -28,14 +28,16 @@ pub struct PreferencesMessageHandler { } impl PreferencesMessageHandler { - #[cfg(not(target_os = "macos"))] - pub fn needs_restart(&self, other: &Self) -> bool { - self.disable_ui_acceleration != other.disable_ui_acceleration - } - - #[cfg(target_os = "macos")] - pub fn needs_restart(&self, other: &Self) -> bool { - self.disable_ui_acceleration != other.disable_ui_acceleration || self.vsync != other.vsync + pub fn preferences_requiring_restart(&self, other: &Self) -> Vec { + let mut requiring_restart = Vec::new(); + if disable_ui_acceleration != other.disable_ui_acceleration { + requiring_restart.push("Disable UI Acceleration"); + } + #[cfg(target_os = "macos")] + if self.vsync != other.vsync { + requiring_restart.push("V-Sync"); + } + requiring_restart.into_iter().map(String::from).collect() } pub fn get_selection_mode(&self) -> SelectionMode { From 29e837ee8662c15617d65f2ba15ba71fe7360d0d Mon Sep 17 00:00:00 2001 From: Timon Date: Sun, 15 Mar 2026 12:14:22 +0100 Subject: [PATCH 2/4] Fix --- editor/src/messages/preferences/preferences_message_handler.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editor/src/messages/preferences/preferences_message_handler.rs b/editor/src/messages/preferences/preferences_message_handler.rs index fa9fdfdd6d..25167d19a6 100644 --- a/editor/src/messages/preferences/preferences_message_handler.rs +++ b/editor/src/messages/preferences/preferences_message_handler.rs @@ -30,7 +30,7 @@ pub struct PreferencesMessageHandler { impl PreferencesMessageHandler { pub fn preferences_requiring_restart(&self, other: &Self) -> Vec { let mut requiring_restart = Vec::new(); - if disable_ui_acceleration != other.disable_ui_acceleration { + if self.disable_ui_acceleration != other.disable_ui_acceleration { requiring_restart.push("Disable UI Acceleration"); } #[cfg(target_os = "macos")] From 2b9b1a5cfdbe8fea16c7aa49a3eaeaebbaeeed92 Mon Sep 17 00:00:00 2001 From: Timon Date: Sun, 15 Mar 2026 11:46:12 +0000 Subject: [PATCH 3/4] Fix --- desktop/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/src/lib.rs b/desktop/src/lib.rs index e3b9f3274d..125819e5a7 100644 --- a/desktop/src/lib.rs +++ b/desktop/src/lib.rs @@ -114,7 +114,7 @@ pub fn start() { match exit_reason { app::ExitReason::Restart | app::ExitReason::UiAccelerationFailure => { - tracing::error!("Restarting application"); + tracing::info!("Restarting application"); let mut command = std::process::Command::new(std::env::current_exe().unwrap()); #[cfg(target_family = "unix")] let _ = std::os::unix::process::CommandExt::exec(&mut command); From 8d34b46788bb609876034ed3016a7a90d53e16b2 Mon Sep 17 00:00:00 2001 From: Timon Date: Sun, 15 Mar 2026 11:58:49 +0000 Subject: [PATCH 4/4] Fix --- editor/src/messages/preferences/preferences_message_handler.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editor/src/messages/preferences/preferences_message_handler.rs b/editor/src/messages/preferences/preferences_message_handler.rs index 25167d19a6..270b0f21bd 100644 --- a/editor/src/messages/preferences/preferences_message_handler.rs +++ b/editor/src/messages/preferences/preferences_message_handler.rs @@ -35,7 +35,7 @@ impl PreferencesMessageHandler { } #[cfg(target_os = "macos")] if self.vsync != other.vsync { - requiring_restart.push("V-Sync"); + requiring_restart.push("Enable V-Sync"); } requiring_restart.into_iter().map(String::from).collect() }