summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbruvzg <7645683+bruvzg@users.noreply.github.com>2024-06-14 14:51:36 +0300
committerbruvzg <7645683+bruvzg@users.noreply.github.com>2024-06-15 15:33:49 +0300
commit7acaa0d3206ee2863bd81acd0bb0aa77b66c687d (patch)
tree5892dd13c472334bf37c335ba88935b8de5c7990
parent71699e08c9df78b7203fa4ef9cede28e995d6ace (diff)
downloadredot-engine-7acaa0d3206ee2863bd81acd0bb0aa77b66c687d.tar.gz
[EditorProgress] Use `BackgroundProgress` instead of `ProgressDialog` when called for a thread.
-rw-r--r--editor/editor_node.h23
1 files changed, 20 insertions, 3 deletions
diff --git a/editor/editor_node.h b/editor/editor_node.h
index 899da99450..2127d30765 100644
--- a/editor/editor_node.h
+++ b/editor/editor_node.h
@@ -928,12 +928,29 @@ public:
struct EditorProgress {
String task;
- bool step(const String &p_state, int p_step = -1, bool p_force_refresh = true) { return EditorNode::progress_task_step(task, p_state, p_step, p_force_refresh); }
+ bool step(const String &p_state, int p_step = -1, bool p_force_refresh = true) {
+ if (Thread::is_main_thread()) {
+ return EditorNode::progress_task_step(task, p_state, p_step, p_force_refresh);
+ } else {
+ EditorNode::progress_task_step_bg(task, p_step);
+ return false;
+ }
+ }
EditorProgress(const String &p_task, const String &p_label, int p_amount, bool p_can_cancel = false) {
- EditorNode::progress_add_task(p_task, p_label, p_amount, p_can_cancel);
+ if (Thread::is_main_thread()) {
+ EditorNode::progress_add_task(p_task, p_label, p_amount, p_can_cancel);
+ } else {
+ EditorNode::progress_add_task_bg(p_task, p_label, p_amount);
+ }
task = p_task;
}
- ~EditorProgress() { EditorNode::progress_end_task(task); }
+ ~EditorProgress() {
+ if (Thread::is_main_thread()) {
+ EditorNode::progress_end_task(task);
+ } else {
+ EditorNode::progress_end_task_bg(task);
+ }
+ }
};
class EditorPluginList : public Object {