Skip to content

Commit

Permalink
Merge pull request #83290 from trollodel/move_progress_dialog_on_open
Browse files Browse the repository at this point in the history
Keep focus on floating window when showing ProgressDialog
  • Loading branch information
akien-mga committed Nov 15, 2023
2 parents c851a46 + 9ae48c7 commit d89c531
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 0 deletions.
12 changes: 12 additions & 0 deletions editor/progress_dialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,13 @@ void ProgressDialog::_popup() {
main->set_offset(SIDE_BOTTOM, -style->get_margin(SIDE_BOTTOM));

if (!is_inside_tree()) {
for (Window *window : host_windows) {
if (window->has_focus()) {
popup_exclusive_centered(window, ms);
return;
}
}
// No host window found, use main window.
EditorInterface::get_singleton()->popup_dialog_centered(this, ms);
}
}
Expand Down Expand Up @@ -226,6 +233,11 @@ void ProgressDialog::end_task(const String &p_task) {
}
}

void ProgressDialog::add_host_window(Window *p_window) {
ERR_FAIL_NULL(p_window);
host_windows.push_back(p_window);
}

void ProgressDialog::_cancel_pressed() {
canceled = true;
}
Expand Down
4 changes: 4 additions & 0 deletions editor/progress_dialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ class ProgressDialog : public PopupPanel {
VBoxContainer *main = nullptr;
uint64_t last_progress_tick;

LocalVector<Window *> host_windows;

static ProgressDialog *singleton;
void _popup();

Expand All @@ -96,6 +98,8 @@ class ProgressDialog : public PopupPanel {
bool task_step(const String &p_task, const String &p_state, int p_step = -1, bool p_force_redraw = true);
void end_task(const String &p_task);

void add_host_window(Window *p_window);

ProgressDialog();
};

Expand Down
3 changes: 3 additions & 0 deletions editor/window_wrapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
#include "editor/editor_scale.h"
#include "editor/editor_settings.h"
#include "editor/editor_string_names.h"
#include "editor/progress_dialog.h"
#include "scene/gui/box_container.h"
#include "scene/gui/label.h"
#include "scene/gui/panel.h"
Expand Down Expand Up @@ -332,6 +333,8 @@ WindowWrapper::WindowWrapper() {
window_background = memnew(Panel);
window_background->set_anchors_and_offsets_preset(PRESET_FULL_RECT);
window->add_child(window_background);

ProgressDialog::get_singleton()->add_host_window(window);
}

// ScreenSelect
Expand Down

0 comments on commit d89c531

Please sign in to comment.