1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-09 12:50:35 +00:00

Fix viewport doesn't auto-resize on Web.

This commit is contained in:
Zae
2022-11-08 18:33:24 +08:00
parent 40ed34f6dc
commit bc9bf00e4a
2 changed files with 11 additions and 2 deletions

View File

@@ -54,7 +54,15 @@ DisplayServerWeb *DisplayServerWeb::get_singleton() {
// Window (canvas) // Window (canvas)
bool DisplayServerWeb::check_size_force_redraw() { bool DisplayServerWeb::check_size_force_redraw() {
return godot_js_display_size_update() != 0; bool size_changed = godot_js_display_size_update() != 0;
if (size_changed && !rect_changed_callback.is_null()) {
Variant size = Rect2i(Point2i(), window_get_size()); // TODO use window_get_position if implemented.
Variant *vp = &size;
Variant ret;
Callable::CallError ce;
rect_changed_callback.callp((const Variant **)&vp, 1, ret, ce);
}
return size_changed;
} }
void DisplayServerWeb::fullscreen_change_callback(int p_fullscreen) { void DisplayServerWeb::fullscreen_change_callback(int p_fullscreen) {
@@ -903,7 +911,7 @@ ObjectID DisplayServerWeb::window_get_attached_instance_id(WindowID p_window) co
} }
void DisplayServerWeb::window_set_rect_changed_callback(const Callable &p_callable, WindowID p_window) { void DisplayServerWeb::window_set_rect_changed_callback(const Callable &p_callable, WindowID p_window) {
// Not supported. rect_changed_callback = p_callable;
} }
void DisplayServerWeb::window_set_window_event_callback(const Callable &p_callable, WindowID p_window) { void DisplayServerWeb::window_set_window_event_callback(const Callable &p_callable, WindowID p_window) {

View File

@@ -60,6 +60,7 @@ private:
WindowMode window_mode = WINDOW_MODE_WINDOWED; WindowMode window_mode = WINDOW_MODE_WINDOWED;
ObjectID window_attached_instance_id = {}; ObjectID window_attached_instance_id = {};
Callable rect_changed_callback;
Callable window_event_callback; Callable window_event_callback;
Callable input_event_callback; Callable input_event_callback;
Callable input_text_callback; Callable input_text_callback;