[HTML5] Remove "maximize" support.

I don't think anyone is actively using it, and it's a lot of convoluted
code.
This commit is contained in:
Fabio Alessandrelli 2021-09-12 18:14:35 +02:00
parent d61fc468a2
commit adef4ed958
2 changed files with 3 additions and 59 deletions

View file

@ -99,13 +99,6 @@ bool OS_JavaScript::check_size_force_redraw() {
void OS_JavaScript::fullscreen_change_callback(int p_fullscreen) { void OS_JavaScript::fullscreen_change_callback(int p_fullscreen) {
OS_JavaScript *os = get_singleton(); OS_JavaScript *os = get_singleton();
os->video_mode.fullscreen = p_fullscreen; os->video_mode.fullscreen = p_fullscreen;
if (os->video_mode.fullscreen) {
os->entering_fullscreen = false;
} else {
// Restoring maximized window now will cause issues,
// so delay until main_loop_iterate.
os->just_exited_fullscreen = true;
}
} }
void OS_JavaScript::window_blur_callback() { void OS_JavaScript::window_blur_callback() {
@ -128,15 +121,9 @@ Size2 OS_JavaScript::get_screen_size(int p_screen) const {
void OS_JavaScript::set_window_size(const Size2 p_size) { void OS_JavaScript::set_window_size(const Size2 p_size) {
if (video_mode.fullscreen) { if (video_mode.fullscreen) {
window_maximized = false;
set_window_fullscreen(false); set_window_fullscreen(false);
} else {
if (window_maximized) {
emscripten_exit_soft_fullscreen();
window_maximized = false;
} }
godot_js_display_desired_size_set(p_size.x, p_size.y); godot_js_display_desired_size_set(p_size.x, p_size.y);
}
} }
Size2 OS_JavaScript::get_window_size() const { Size2 OS_JavaScript::get_window_size() const {
@ -146,29 +133,11 @@ Size2 OS_JavaScript::get_window_size() const {
} }
void OS_JavaScript::set_window_maximized(bool p_enabled) { void OS_JavaScript::set_window_maximized(bool p_enabled) {
#ifndef TOOLS_ENABLED WARN_PRINT_ONCE("Maximizing windows is not supported for the HTML5 platform.");
if (video_mode.fullscreen) {
window_maximized = p_enabled;
set_window_fullscreen(false);
} else if (!p_enabled) {
emscripten_exit_soft_fullscreen();
window_maximized = false;
} else if (!window_maximized) {
// Prevent calling emscripten_enter_soft_fullscreen mutltiple times,
// this would hide page elements permanently.
EmscriptenFullscreenStrategy strategy;
strategy.scaleMode = EMSCRIPTEN_FULLSCREEN_SCALE_STRETCH;
strategy.canvasResolutionScaleMode = EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_STDDEF;
strategy.filteringMode = EMSCRIPTEN_FULLSCREEN_FILTERING_DEFAULT;
strategy.canvasResizedCallback = NULL;
emscripten_enter_soft_fullscreen(canvas_id, &strategy);
window_maximized = p_enabled;
}
#endif
} }
bool OS_JavaScript::is_window_maximized() const { bool OS_JavaScript::is_window_maximized() const {
return window_maximized; return false;
} }
void OS_JavaScript::set_window_fullscreen(bool p_enabled) { void OS_JavaScript::set_window_fullscreen(bool p_enabled) {
@ -179,14 +148,8 @@ void OS_JavaScript::set_window_fullscreen(bool p_enabled) {
// Just request changes here, if successful, logic continues in // Just request changes here, if successful, logic continues in
// fullscreen_change_callback. // fullscreen_change_callback.
if (p_enabled) { if (p_enabled) {
if (window_maximized) {
// Soft fullsreen during real fullscreen can cause issues, so exit.
// This must be called before requesting full screen.
emscripten_exit_soft_fullscreen();
}
int result = godot_js_display_fullscreen_request(); int result = godot_js_display_fullscreen_request();
ERR_FAIL_COND_MSG(result, "The request was denied. Remember that enabling fullscreen is only possible from an input callback for the HTML5 platform."); ERR_FAIL_COND_MSG(result, "The request was denied. Remember that enabling fullscreen is only possible from an input callback for the HTML5 platform.");
entering_fullscreen = true;
} else { } else {
// No logic allowed here, since exiting w/ ESC key won't use this function. // No logic allowed here, since exiting w/ ESC key won't use this function.
ERR_FAIL_COND(godot_js_display_fullscreen_exit()); ERR_FAIL_COND(godot_js_display_fullscreen_exit());
@ -897,19 +860,6 @@ bool OS_JavaScript::main_loop_iterate() {
process_joypads(); process_joypads();
} }
if (just_exited_fullscreen) {
if (window_maximized) {
EmscriptenFullscreenStrategy strategy;
strategy.scaleMode = EMSCRIPTEN_FULLSCREEN_SCALE_STRETCH;
strategy.canvasResolutionScaleMode = EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_STDDEF;
strategy.filteringMode = EMSCRIPTEN_FULLSCREEN_FILTERING_DEFAULT;
strategy.canvasResizedCallback = NULL;
emscripten_enter_soft_fullscreen(canvas_id, &strategy);
} else {
godot_js_display_size_update();
}
just_exited_fullscreen = false;
}
return Main::iteration(); return Main::iteration();
} }
@ -1126,9 +1076,6 @@ OS_JavaScript::OS_JavaScript() {
last_click_ms = 0; last_click_ms = 0;
last_click_pos = Point2(-100, -100); last_click_pos = Point2(-100, -100);
window_maximized = false;
entering_fullscreen = false;
just_exited_fullscreen = false;
transparency_enabled = false; transparency_enabled = false;
main_loop = NULL; main_loop = NULL;

View file

@ -55,9 +55,6 @@ private:
JSKeyEvent key_event; JSKeyEvent key_event;
VideoMode video_mode; VideoMode video_mode;
bool window_maximized;
bool entering_fullscreen;
bool just_exited_fullscreen;
bool transparency_enabled; bool transparency_enabled;
EMSCRIPTEN_WEBGL_CONTEXT_HANDLE webgl_ctx; EMSCRIPTEN_WEBGL_CONTEXT_HANDLE webgl_ctx;