Pass window exclusive and transient properties for subwindow creation
On Windows this allows to avoid having to change the owner of the window after it has been created, which in rare circumstances may cause the window to bug out.
This commit is contained in:
parent
91eb688e17
commit
97aa278edb
10 changed files with 45 additions and 25 deletions
|
|
@ -631,7 +631,7 @@ void Window::_make_window() {
|
|||
window_rect = Rect2i(DisplayServer::get_singleton()->screen_get_position(DisplayServer::SCREEN_WITH_KEYBOARD_FOCUS) + (DisplayServer::get_singleton()->screen_get_size(DisplayServer::SCREEN_WITH_KEYBOARD_FOCUS) - size) / 2, size);
|
||||
}
|
||||
|
||||
window_id = DisplayServer::get_singleton()->create_sub_window(DisplayServer::WindowMode(mode), vsync_mode, f, window_rect);
|
||||
window_id = DisplayServer::get_singleton()->create_sub_window(DisplayServer::WindowMode(mode), vsync_mode, f, window_rect, is_in_edited_scene_root() ? false : exclusive, transient_parent ? transient_parent->window_id : DisplayServer::INVALID_WINDOW_ID);
|
||||
ERR_FAIL_COND(window_id == DisplayServer::INVALID_WINDOW_ID);
|
||||
DisplayServer::get_singleton()->window_set_max_size(Size2i(), window_id);
|
||||
DisplayServer::get_singleton()->window_set_min_size(Size2i(), window_id);
|
||||
|
|
@ -639,18 +639,8 @@ void Window::_make_window() {
|
|||
DisplayServer::get_singleton()->window_set_title(tr_title, window_id);
|
||||
DisplayServer::get_singleton()->window_attach_instance_id(get_instance_id(), window_id);
|
||||
|
||||
if (is_in_edited_scene_root()) {
|
||||
DisplayServer::get_singleton()->window_set_exclusive(window_id, false);
|
||||
} else {
|
||||
DisplayServer::get_singleton()->window_set_exclusive(window_id, exclusive);
|
||||
}
|
||||
|
||||
_update_window_size();
|
||||
|
||||
if (transient_parent && transient_parent->window_id != DisplayServer::INVALID_WINDOW_ID) {
|
||||
DisplayServer::get_singleton()->window_set_transient(window_id, transient_parent->window_id);
|
||||
}
|
||||
|
||||
if (transient_parent) {
|
||||
for (const Window *E : transient_children) {
|
||||
if (E->window_id != DisplayServer::INVALID_WINDOW_ID) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue