Change summary
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(-)
Detailed changes
@@ -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<dyn FnMut(InputEvent) -> bool>) {
@@ -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<Rc<dyn PlatformDisplay>> {
self.platform
.displays()
@@ -2690,14 +2690,15 @@ impl Workspace {
fn render_titlebar(&self, cx: &mut ViewContext<Self>) -> impl Component<Self> {
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