Detailed changes
@@ -28,6 +28,7 @@
"cmd-h": "zed::Hide",
"alt-cmd-h": "zed::HideOthers",
"cmd-m": "zed::Minimize",
+ "ctrl-cmd-f": "zed::ToggleFullScreen",
"cmd-n": "workspace::NewFile",
"cmd-shift-n": "workspace::NewWindow",
"cmd-o": "workspace::Open",
@@ -1319,6 +1319,11 @@ impl MutableAppContext {
window.zoom();
}
+ pub fn toggle_window_full_screen(&self, window_id: usize) {
+ let (_, window) = &self.presenters_and_platform_windows[&window_id];
+ window.toggle_full_screen();
+ }
+
fn prompt(
&self,
window_id: usize,
@@ -3683,6 +3688,10 @@ impl<'a, T: View> ViewContext<'a, T> {
self.app.zoom_window(self.window_id)
}
+ pub fn toggle_full_screen(&self) {
+ self.app.toggle_window_full_screen(self.window_id)
+ }
+
pub fn prompt(
&self,
level: PromptLevel,
@@ -123,6 +123,7 @@ pub trait Window: WindowContext {
fn show_character_palette(&self);
fn minimize(&self);
fn zoom(&self);
+ fn toggle_full_screen(&self);
}
pub trait WindowContext {
@@ -601,6 +601,18 @@ impl platform::Window for Window {
})
.detach();
}
+
+ fn toggle_full_screen(&self) {
+ let this = self.0.borrow();
+ let window = this.native_window;
+ this.executor
+ .spawn(async move {
+ unsafe {
+ window.toggleFullScreen_(nil);
+ }
+ })
+ .detach();
+ }
}
impl platform::WindowContext for Window {
@@ -294,6 +294,8 @@ impl super::Window for Window {
fn minimize(&self) {}
fn zoom(&self) {}
+
+ fn toggle_full_screen(&self) {}
}
pub fn platform() -> Platform {
@@ -51,6 +51,7 @@ actions!(
ShowAll,
Minimize,
Zoom,
+ ToggleFullScreen,
Quit,
DebugElements,
OpenSettings,
@@ -88,6 +89,11 @@ pub fn init(app_state: &Arc<AppState>, cx: &mut gpui::MutableAppContext) {
cx.zoom_window();
},
);
+ cx.add_action(
+ |_: &mut Workspace, _: &ToggleFullScreen, cx: &mut ViewContext<Workspace>| {
+ cx.toggle_full_screen();
+ },
+ );
cx.add_global_action(quit);
cx.add_global_action(move |action: &OpenBrowser, cx| cx.platform().open_url(&action.url));
cx.add_global_action(move |_: &IncreaseBufferFontSize, cx| {