From 803d2b671062ee0e6563fe730253422046fc23b7 Mon Sep 17 00:00:00 2001 From: Conrad Irwin Date: Thu, 2 Nov 2023 10:58:24 -0600 Subject: [PATCH] Add double click to zoom the window Co-Authored-By: Antonio --- crates/gpui2/src/platform/mac/window.rs | 33 +++++++++++++++++-------- crates/gpui2/src/window.rs | 4 +++ crates/workspace2/src/workspace2.rs | 7 +++--- 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/crates/gpui2/src/platform/mac/window.rs b/crates/gpui2/src/platform/mac/window.rs index 52dcf31603..affeab57c7 100644 --- a/crates/gpui2/src/platform/mac/window.rs +++ b/crates/gpui2/src/platform/mac/window.rs @@ -678,10 +678,15 @@ impl MacWindow { impl Drop for MacWindow { fn drop(&mut self) { - let native_window = self.0.lock().native_window; - unsafe { - native_window.close(); - } + let this = self.0.lock(); + let window = this.native_window; + this.executor + .spawn(async move { + unsafe { + window.close(); + } + }) + .detach(); } } @@ -868,17 +873,25 @@ impl PlatformWindow for MacWindow { fn zoom(&self) { let this = self.0.lock(); let window = this.native_window; - unsafe { - window.zoom_(nil); - } + this.executor + .spawn(async move { + unsafe { + window.zoom_(nil); + } + }) + .detach(); } fn toggle_full_screen(&self) { let this = self.0.lock(); let window = this.native_window; - unsafe { - window.toggleFullScreen_(nil); - } + this.executor + .spawn(async move { + unsafe { + window.toggleFullScreen_(nil); + } + }) + .detach(); } fn on_input(&self, callback: Box bool>) { diff --git a/crates/gpui2/src/window.rs b/crates/gpui2/src/window.rs index 8e1022c890..880f4fc6e6 100644 --- a/crates/gpui2/src/window.rs +++ b/crates/gpui2/src/window.rs @@ -575,6 +575,10 @@ impl<'a> WindowContext<'a> { self.window.active } + pub fn zoom_window(&self) { + self.window.platform_window.zoom(); + } + pub fn display(&self) -> Option> { self.platform .displays() diff --git a/crates/workspace2/src/workspace2.rs b/crates/workspace2/src/workspace2.rs index 3db4900463..38e01e10b0 100644 --- a/crates/workspace2/src/workspace2.rs +++ b/crates/workspace2/src/workspace2.rs @@ -2690,14 +2690,15 @@ impl Workspace { fn render_titlebar(&self, cx: &mut ViewContext) -> impl Component { div() + .bg(cx.theme().colors().title_bar) .when( - matches!(cx.window_bounds(), WindowBounds::Fullscreen), + !matches!(cx.window_bounds(), WindowBounds::Fullscreen), |s| s.pl_20(), ) - .id(0) + .id("titlebar") .on_click(|workspace, event, cx| { if event.up.click_count == 2 { - println!("ZOOOOOM") + cx.zoom_window(); } }) .child("Collab title bar Item") // self.titlebar_item