Fix get_position_with_decorations and get_size_with_decorations for embedded windows.

This commit is contained in:
bruvzg
2024-05-24 17:32:32 +03:00
parent b7feebefab
commit 64d789aba7
2 changed files with 22 additions and 0 deletions

View File

@ -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;
}