Skip to content

Commit

Permalink
Use prefixed fullscreen methods (#1559)
Browse files Browse the repository at this point in the history
Some Safari versions that aren't even that old need webkit prefix
  • Loading branch information
GarboMuffin authored Jun 21, 2024
1 parent d7df8c3 commit 38be121
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 13 deletions.
36 changes: 31 additions & 5 deletions extensions/CubesterYT/WindowControls.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,32 @@
return Math.floor(Math.random() * (max - min + 1)) + min;
}

const isFullscreenEnabled = () => {
if (typeof document.fullscreenElement !== "undefined") {
return document.fullscreenElement !== null;
}
if (typeof document.webkitFullscreenElement !== "undefined") {
return document.webkitFullscreenElement !== null;
}
return false;
};

const enterFullscreen = () => {
if (document.documentElement.requestFullscreen) {
document.documentElement.requestFullscreen();
} else if (document.documentElement.webkitRequestFullscreen) {
document.documentElement.webkitRequestFullscreen();
}
};

const exitFullscreen = () => {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
};

class WindowControls {
getInfo() {
return {
Expand Down Expand Up @@ -515,17 +541,17 @@
return document.title;
}
enterFullscreen() {
if (document.fullscreenElement == null) {
document.documentElement.requestFullscreen();
if (!isFullscreenEnabled()) {
enterFullscreen();
}
}
exitFullscreen() {
if (document.fullscreenElement !== null) {
document.exitFullscreen();
if (isFullscreenEnabled()) {
exitFullscreen();
}
}
isFullscreen() {
return document.fullscreenElement !== null;
return isFullscreenEnabled();
}
closeWindow() {
const editorConfirmation = Scratch.translate({
Expand Down
44 changes: 36 additions & 8 deletions extensions/veggiecan/browserfullscreen.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,39 @@
const icon =
"data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI2My4yNjc0MiIgaGVpZ2h0PSI2My4xODQ5NSIgdmlld0JveD0iMCwwLDYzLjI2NzQyLDYzLjE4NDk1Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjA4LjM2NjI5LC0xNDguNDA3NTMpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iIiBzdHJva2UtZGFzaG9mZnNldD0iMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiPjxwYXRoIGQ9IiIgZmlsbD0iI2ZmZDI0ZCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjAuNSIvPjxwYXRoIGQ9IiIgZmlsbD0iIzAxMDEwMCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjAuNSIvPjxwYXRoIGQ9IiIgZmlsbD0iIzAxMDEwMCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjAuNSIvPjxwYXRoIGQ9IiIgZmlsbD0iIzAxMDEwMCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjAuNSIvPjxwYXRoIGQ9IiIgZmlsbD0iIzAxMDEwMCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjAuNSIvPjxwYXRoIGQ9IiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjAuNSIvPjxwYXRoIGQ9IiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjAuNSIvPjxwYXRoIGQ9Ik0yNjkuNjMzNzEsMTgwYzAsMTYuMzQzNDcgLTEzLjI2NzQ3LDI5LjU5MjQ4IC0yOS42MzM3MSwyOS41OTI0OGMtMTYuMzY2MjUsMCAtMjkuNjMzNzEsLTEzLjI0OTAxIC0yOS42MzM3MSwtMjkuNTkyNDhjMCwtMTYuMzQzNDcgMTMuMjY3NDcsLTI5LjU5MjQ3IDI5LjYzMzcxLC0yOS41OTI0N2MxNi4zNjYyNSwwIDI5LjYzMzcxLDEzLjI0OSAyOS42MzM3MSwyOS41OTI0N3oiIGZpbGw9IiNmZmQyNGQiIHN0cm9rZT0iI2ZmZDI0ZCIgc3Ryb2tlLXdpZHRoPSI0Ii8+PGcgc3Ryb2tlLXdpZHRoPSI1Ij48ZyBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiPjxwYXRoIGQ9Ik0yNjAuMjA3MDEsMTY3LjcwODg3YzAsMCAtMy43NDA3NSwtMS45MjU0NCAtNS4xOTI2MywtMi42NzI3NmMtMS4wNDg4LC0wLjUzOTg0IC0xLjQ3OTgyLC0wLjk5NjMxIC0xLjQ3OTgyLC0wLjk5NjMxbDYuNjgyMzksLTAuMjE1Njl6Ii8+PGc+PHBhdGggZD0iTTIyNy45OTM3NiwxOTYuMDEwNDFsMjQuMTE4NywtMzAuNTQ3OTdsMi4xODE5OSwxLjcyMjc2bC0yNC4xMTg3LDMwLjU0Nzk3eiIvPjxwYXRoIGQ9Ik0yNTguMTI3ODQsMTkyLjk2MTIybC0zNS4yMjk0OSwtMjUuMjk0NjZsMC45NzI4OCwtMS4zNTQ5OWwzNS4yMjk0OSwyNS4yOTQ2NnoiLz48cGF0aCBkPSJNMjI1LjM4ODcsMTYyLjM1NzIxYzAsMCAtMi42NzQ1NCwzLjQzOTM1IC0zLjcxMjYsNC43NzQyNWMtMC43NDk4NywwLjk2NDMgLTEuMjg3MzQsMS4zMDg5MSAtMS4yODczNCwxLjMwODkxbDEuMjA1MjksLTYuOTQ4OTZ6Ii8+PHBhdGggZD0iTTI1Ni4wOTcxMiwxOTUuNDE3NDFjMCwwIDMuMTk3ODMsLTIuOTU5MDkgNC40Mzg5OSwtNC4xMDc1OWMwLjg5NjU5LC0wLjgyOTY1IDEuNDgyOSwtMS4wODIzNSAxLjQ4MjksLTEuMDgyMzVsLTIuMzE4MzQsNi42NjA3OXoiLz48cGF0aCBkPSJNMjI1LjAzMDcxLDE5NS40MTMwN2MwLDAgMy42NDk1NiwyLjM3OTcxIDUuMDY2MDQsMy4zMDMzNGMxLjAyMzI0LDAuNjY3MjEgMS40MTEyOSwxLjE3NDIgMS40MTEyOSwxLjE3NDJsLTcuMDI1MDUsLTAuNjI0MXoiLz48L2c+PC9nPjxwYXRoIGQ9Ik0yMzIuOTYyNDgsMTgxLjk4NjUxbDcuMTQ2NjYsLTEwLjgyODAzbDEwLjY3MzM2LDcuMDQ0NTdsLTcuMTQ2NjYsMTAuODI4MDN6IiBmaWxsPSIjZmZkMjRkIiBzdHJva2U9Im5vbmUiLz48L2c+PC9nPjwvZz48L3N2Zz4=";

window.addEventListener("fullscreenchange", () => {
const isFullscreenEnabled = () => {
if (typeof document.fullscreenElement !== "undefined") {
return document.fullscreenElement !== null;
}
if (typeof document.webkitFullscreenElement !== "undefined") {
return document.webkitFullscreenElement !== null;
}
return false;
};

const enterFullscreen = () => {
if (document.documentElement.requestFullscreen) {
document.documentElement.requestFullscreen();
} else if (document.documentElement.webkitRequestFullscreen) {
document.documentElement.webkitRequestFullscreen();
}
};

const exitFullscreen = () => {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
};

const onFullScreenChange = () => {
Scratch.vm.runtime.startHats("fullscreen0419_whenfullscreen", {
ENABLED: document.fullscreenElement === null ? "exited" : "entered",
ENABLED: isFullscreenEnabled() ? "entered" : "exited",
});
});
};
window.addEventListener("fullscreenchange", onFullScreenChange);
window.addEventListener("webkitfullscreenchange", onFullScreenChange);

class FullscreenExtension {
getInfo() {
Expand Down Expand Up @@ -89,14 +117,14 @@
}
fullscreen(args) {
const action = Scratch.Cast.toString(args.ACTION).toLowerCase();
if (action === "enter" && !document.fullscreenElement) {
document.documentElement.requestFullscreen();
} else if (action === "exit" && document.fullscreenElement) {
document.exitFullscreen();
if (action === "enter" && !isFullscreenEnabled()) {
enterFullscreen();
} else if (action === "exit" && isFullscreenEnabled()) {
exitFullscreen();
}
}
isInFullscreen() {
return document.fullscreenElement !== null;
return isFullscreenEnabled();
}
}

Expand Down

0 comments on commit 38be121

Please sign in to comment.