From 9398de6a577f3d88e08135f50027e21f80cf8b4e Mon Sep 17 00:00:00 2001 From: Mikayla Maki Date: Fri, 10 Mar 2023 13:15:36 -0800 Subject: [PATCH 1/2] Add feedback for telemetry item when there's no data --- crates/zed/src/zed.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/crates/zed/src/zed.rs b/crates/zed/src/zed.rs index 20dbcdb7efc..bebc1954640 100644 --- a/crates/zed/src/zed.rs +++ b/crates/zed/src/zed.rs @@ -577,8 +577,13 @@ fn open_telemetry_log_file( workspace.with_local_workspace(&app_state.clone(), cx, move |_, cx| { cx.spawn_weak(|workspace, mut cx| async move { let workspace = workspace.upgrade(&cx)?; - let path = app_state.client.telemetry_log_file_path()?; - let log = app_state.fs.load(&path).await.log_err()?; + + async fn fetch_log_string(app_state: &Arc) -> Option { + let path = app_state.client.telemetry_log_file_path()?; + app_state.fs.load(&path).await.log_err() + } + + let log = fetch_log_string(&app_state).await.unwrap_or_else(|| "// No data has been collected yet".to_string()); const MAX_TELEMETRY_LOG_LEN: usize = 5 * 1024 * 1024; let mut start_offset = log.len().saturating_sub(MAX_TELEMETRY_LOG_LEN); From adf94a16812b979206ce8ad5d0593c32cf696c2d Mon Sep 17 00:00:00 2001 From: Mikayla Maki Date: Fri, 10 Mar 2023 14:43:28 -0800 Subject: [PATCH 2/2] Switch from using the key window to the main window mac platform API When the help menu is open, the help menu's search field is the key window, and this was causing menu item action resolution to fail co-authored-by: Max --- crates/gpui/src/app.rs | 2 +- crates/gpui/src/app/menu.rs | 6 +++--- crates/gpui/src/platform.rs | 2 +- crates/gpui/src/platform/mac/platform.rs | 4 ++-- crates/gpui/src/platform/mac/window.rs | 8 ++++---- crates/gpui/src/platform/test.rs | 2 +- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/crates/gpui/src/app.rs b/crates/gpui/src/app.rs index 0397032de89..cc8facafc61 100644 --- a/crates/gpui/src/app.rs +++ b/crates/gpui/src/app.rs @@ -1294,7 +1294,7 @@ impl MutableAppContext { pub fn is_action_available(&self, action: &dyn Action) -> bool { let action_type = action.as_any().type_id(); - if let Some(window_id) = self.cx.platform.key_window_id() { + if let Some(window_id) = self.cx.platform.main_window_id() { if let Some(focused_view_id) = self.focused_view_id(window_id) { for view_id in self.ancestors(window_id, focused_view_id) { if let Some(view) = self.views.get(&(window_id, view_id)) { diff --git a/crates/gpui/src/app/menu.rs b/crates/gpui/src/app/menu.rs index 5fe307a7c10..b0965539a51 100644 --- a/crates/gpui/src/app/menu.rs +++ b/crates/gpui/src/app/menu.rs @@ -77,9 +77,9 @@ pub(crate) fn setup_menu_handlers(foreground_platform: &dyn ForegroundPlatform, let cx = app.0.clone(); move |action| { let mut cx = cx.borrow_mut(); - if let Some(key_window_id) = cx.cx.platform.key_window_id() { - if let Some(view_id) = cx.focused_view_id(key_window_id) { - cx.handle_dispatch_action_from_effect(key_window_id, Some(view_id), action); + if let Some(main_window_id) = cx.cx.platform.main_window_id() { + if let Some(view_id) = cx.focused_view_id(main_window_id) { + cx.handle_dispatch_action_from_effect(main_window_id, Some(view_id), action); return; } } diff --git a/crates/gpui/src/platform.rs b/crates/gpui/src/platform.rs index 76c2707d263..4c1ba49690c 100644 --- a/crates/gpui/src/platform.rs +++ b/crates/gpui/src/platform.rs @@ -58,7 +58,7 @@ pub trait Platform: Send + Sync { options: WindowOptions, executor: Rc, ) -> Box; - fn key_window_id(&self) -> Option; + fn main_window_id(&self) -> Option; fn add_status_item(&self) -> Box; diff --git a/crates/gpui/src/platform/mac/platform.rs b/crates/gpui/src/platform/mac/platform.rs index aeec02c8caa..9bb6430c644 100644 --- a/crates/gpui/src/platform/mac/platform.rs +++ b/crates/gpui/src/platform/mac/platform.rs @@ -587,8 +587,8 @@ impl platform::Platform for MacPlatform { Box::new(Window::open(id, options, executor, self.fonts())) } - fn key_window_id(&self) -> Option { - Window::key_window_id() + fn main_window_id(&self) -> Option { + Window::main_window_id() } fn add_status_item(&self) -> Box { diff --git a/crates/gpui/src/platform/mac/window.rs b/crates/gpui/src/platform/mac/window.rs index 19173707fb1..a0c1820368c 100644 --- a/crates/gpui/src/platform/mac/window.rs +++ b/crates/gpui/src/platform/mac/window.rs @@ -604,12 +604,12 @@ impl Window { } } - pub fn key_window_id() -> Option { + pub fn main_window_id() -> Option { unsafe { let app = NSApplication::sharedApplication(nil); - let key_window: id = msg_send![app, keyWindow]; - if msg_send![key_window, isKindOfClass: WINDOW_CLASS] { - let id = get_window_state(&*key_window).borrow().id; + let main_window: id = msg_send![app, mainWindow]; + if msg_send![main_window, isKindOfClass: WINDOW_CLASS] { + let id = get_window_state(&*main_window).borrow().id; Some(id) } else { None diff --git a/crates/gpui/src/platform/test.rs b/crates/gpui/src/platform/test.rs index 194684bd129..a3532dd96e1 100644 --- a/crates/gpui/src/platform/test.rs +++ b/crates/gpui/src/platform/test.rs @@ -157,7 +157,7 @@ impl super::Platform for Platform { })) } - fn key_window_id(&self) -> Option { + fn main_window_id(&self) -> Option { None }