summaryrefslogtreecommitdiffstats
path: root/scene/main/window.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scene/main/window.cpp')
-rw-r--r--scene/main/window.cpp26
1 files changed, 18 insertions, 8 deletions
diff --git a/scene/main/window.cpp b/scene/main/window.cpp
index 823b0c6f5b..36d7d079b2 100644
--- a/scene/main/window.cpp
+++ b/scene/main/window.cpp
@@ -284,7 +284,13 @@ void Window::set_title(const String &p_title) {
embedder->_sub_window_update(this);
} else if (window_id != DisplayServer::INVALID_WINDOW_ID) {
DisplayServer::get_singleton()->window_set_title(tr_title, window_id);
- _update_window_size();
+ if (keep_title_visible) {
+ Size2i title_size = DisplayServer::get_singleton()->window_get_title_size(tr_title, window_id);
+ Size2i size_limit = get_clamped_minimum_size();
+ if (title_size.x > size_limit.x || title_size.y > size_limit.y) {
+ _update_window_size();
+ }
+ }
}
}
@@ -961,6 +967,10 @@ Size2i Window::_clamp_window_size(const Size2i &p_size) {
void Window::_update_window_size() {
Size2i size_limit = get_clamped_minimum_size();
+ if (!embedder && window_id != DisplayServer::INVALID_WINDOW_ID && keep_title_visible) {
+ Size2i title_size = DisplayServer::get_singleton()->window_get_title_size(tr_title, window_id);
+ size_limit = size_limit.max(title_size);
+ }
size = size.max(size_limit);
@@ -992,12 +1002,6 @@ void Window::_update_window_size() {
}
DisplayServer::get_singleton()->window_set_max_size(max_size_used, window_id);
-
- if (keep_title_visible) {
- Size2i title_size = DisplayServer::get_singleton()->window_get_title_size(tr_title, window_id);
- size_limit = size_limit.max(title_size);
- }
-
DisplayServer::get_singleton()->window_set_min_size(size_limit, window_id);
DisplayServer::get_singleton()->window_set_size(size, window_id);
}
@@ -1297,7 +1301,13 @@ void Window::_notification(int p_what) {
if (!embedder && window_id != DisplayServer::INVALID_WINDOW_ID) {
DisplayServer::get_singleton()->window_set_title(tr_title, window_id);
- _update_window_size();
+ if (keep_title_visible) {
+ Size2i title_size = DisplayServer::get_singleton()->window_get_title_size(tr_title, window_id);
+ Size2i size_limit = get_clamped_minimum_size();
+ if (title_size.x > size_limit.x || title_size.y > size_limit.y) {
+ _update_window_size();
+ }
+ }
}
} break;