diff options
author | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2024-05-24 17:32:32 +0300 |
---|---|---|
committer | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2024-05-24 20:10:36 +0300 |
commit | 64d789aba7b5f57611d503be55e9405ff389e05e (patch) | |
tree | f1f8032efab916d03ed7ae6db32708821c19dc7d /scene | |
parent | b7feebefabc2d48b0d4794cd31fc141f1caecc5c (diff) | |
download | redot-engine-64d789aba7b5f57611d503be55e9405ff389e05e.tar.gz |
Fix `get_position_with_decorations` and `get_size_with_decorations` for embedded windows.
Diffstat (limited to 'scene')
-rw-r--r-- | scene/main/window.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/scene/main/window.cpp b/scene/main/window.cpp index e9a7123da0..1649f8b73c 100644 --- a/scene/main/window.cpp +++ b/scene/main/window.cpp @@ -397,6 +397,16 @@ Point2i Window::get_position_with_decorations() const { if (window_id != DisplayServer::INVALID_WINDOW_ID) { return DisplayServer::get_singleton()->window_get_position_with_decorations(window_id); } + if (visible && is_embedded() && !get_flag(Window::FLAG_BORDERLESS)) { + Size2 border_offset; + if (theme_cache.embedded_border.is_valid()) { + border_offset = theme_cache.embedded_border->get_offset(); + } + if (theme_cache.embedded_unfocused_border.is_valid()) { + border_offset = border_offset.max(theme_cache.embedded_unfocused_border->get_offset()); + } + return position - border_offset; + } return position; } @@ -405,6 +415,16 @@ Size2i Window::get_size_with_decorations() const { if (window_id != DisplayServer::INVALID_WINDOW_ID) { return DisplayServer::get_singleton()->window_get_size_with_decorations(window_id); } + if (visible && is_embedded() && !get_flag(Window::FLAG_BORDERLESS)) { + Size2 border_size; + if (theme_cache.embedded_border.is_valid()) { + border_size = theme_cache.embedded_border->get_minimum_size(); + } + if (theme_cache.embedded_unfocused_border.is_valid()) { + border_size = border_size.max(theme_cache.embedded_unfocused_border->get_minimum_size()); + } + return size + border_size; + } return size; } |