Skip to content

Commit c587fdf

Browse files
committed
feat: fullscreen support in desktop app and browsers
1 parent a771bfb commit c587fdf

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/extensions/default/NoDistractions/main.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ define(function (require, exports, module) {
3535
// Constants
3636
var PREFS_PURE_CODE = "noDistractions",
3737
CMD_TOGGLE_PURE_CODE = "view.togglePureCode",
38+
CMD_TOGGLE_FULLSCREEN = "view.toggleFullscreen",
3839
CMD_TOGGLE_PANELS = "view.togglePanels";
3940

4041
//key binding keys
@@ -50,12 +51,17 @@ define(function (require, exports, module) {
5051
panelsToggled = false,
5152
layoutUpdated = false;
5253

54+
function isInFullScreen() {
55+
return !!document.fullscreenElement;
56+
}
57+
5358
/**
5459
* @private
5560
* Updates the command checked status based on the preference for noDestraction mode
5661
*/
5762
function _updateCheckedState() {
5863
CommandManager.get(CMD_TOGGLE_PURE_CODE).setChecked(PreferencesManager.get(PREFS_PURE_CODE));
64+
CommandManager.get(CMD_TOGGLE_FULLSCREEN).setChecked(isInFullScreen());
5965
}
6066

6167
/**
@@ -67,6 +73,16 @@ define(function (require, exports, module) {
6773
Metrics.countEvent(Metrics.EVENT_TYPE.UI, 'noDistractions', 'toggle');
6874
}
6975

76+
async function _toggleFullScreen() {
77+
Metrics.countEvent(Metrics.EVENT_TYPE.UI, 'fullscreen', 'toggle');
78+
if (!isInFullScreen()) {
79+
await document.documentElement.requestFullscreen();
80+
} else if (document.exitFullscreen) {
81+
await document.exitFullscreen();
82+
}
83+
_updateCheckedState();
84+
}
85+
7086
/**
7187
* hide all open panels
7288
*/
@@ -145,10 +161,12 @@ define(function (require, exports, module) {
145161
*/
146162
function initializeCommands() {
147163
CommandManager.register(Strings.CMD_TOGGLE_PURE_CODE, CMD_TOGGLE_PURE_CODE, _togglePureCode);
164+
CommandManager.register(Strings.CMD_TOGGLE_FULLSCREEN, CMD_TOGGLE_FULLSCREEN, _toggleFullScreen);
148165
CommandManager.register(Strings.CMD_TOGGLE_PANELS, CMD_TOGGLE_PANELS, _togglePanels);
149166

150167
Menus.getMenu(Menus.AppMenuBar.VIEW_MENU).addMenuItem(CMD_TOGGLE_PANELS, "", Menus.AFTER, Commands.VIEW_HIDE_SIDEBAR);
151168
Menus.getMenu(Menus.AppMenuBar.VIEW_MENU).addMenuItem(CMD_TOGGLE_PURE_CODE, "", Menus.AFTER, CMD_TOGGLE_PANELS);
169+
Menus.getMenu(Menus.AppMenuBar.VIEW_MENU).addMenuItem(CMD_TOGGLE_FULLSCREEN, "F11", Menus.AFTER, CMD_TOGGLE_PURE_CODE);
152170

153171
KeyBindingManager.addBinding(CMD_TOGGLE_PURE_CODE, [ {key: togglePureCodeKey}, {key: togglePureCodeKeyMac, platform: "mac"} ]);
154172

src/nls/root/strings.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,7 @@ define({
438438
"CMD_TOGGLE_SIDEBAR": "Toggle Sidebar",
439439
"CMD_TOGGLE_PANELS": "Toggle Panels",
440440
"CMD_TOGGLE_PURE_CODE": "No Distractions",
441+
"CMD_TOGGLE_FULLSCREEN": "Fullscreen",
441442
"CMD_ZOOM_UI": "Zoom UI and Fonts",
442443
"CMD_ZOOM_IN": "Zoom In",
443444
"CMD_ZOOM_OUT": "Zoom Out",

0 commit comments

Comments
 (0)