summaryrefslogtreecommitdiffstats
path: root/scene
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-05-30 11:48:02 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-05-30 11:48:02 +0200
commitc9f249796df71f1921c7e8ea11cd23c2339e9376 (patch)
tree9699aac8c15d4e203d8f6290825ac80c1c310cfa /scene
parent4cd39c56fb242137f025313e64c13ab147113d09 (diff)
parent64d789aba7b5f57611d503be55e9405ff389e05e (diff)
downloadredot-engine-c9f249796df71f1921c7e8ea11cd23c2339e9376.tar.gz
Merge pull request #92317 from bruvzg/emb_decorations
Fix `get_position_with_decorations` and `get_size_with_decorations` for embedded windows.
Diffstat (limited to 'scene')
-rw-r--r--scene/main/window.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/scene/main/window.cpp b/scene/main/window.cpp
index addbd6078a..b5824bc695 100644
--- a/scene/main/window.cpp
+++ b/scene/main/window.cpp
@@ -408,6 +408,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;
}
@@ -416,6 +426,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;
}