summaryrefslogtreecommitdiff
path: root/editor
diff options
context:
space:
mode:
authorPouleyKetchoupp <pouleyketchoup@gmail.com>2021-07-30 10:40:59 -0700
committerPouleyKetchoupp <pouleyketchoup@gmail.com>2021-07-30 10:40:59 -0700
commitedc858ad82c2c7a430bc2b7f5ee161e2d0683229 (patch)
tree90f2f7d3033364ebffca09f7309362f721d4136c /editor
parentbdcc8741e4826ce27850bbffa5880c57451e3be5 (diff)
Optimize theme change in code editor
Postpone applying the whole theme when a setting changes, to avoid updating everything many times when the whole editor theme is changed.
Diffstat (limited to 'editor')
-rw-r--r--editor/code_editor.cpp12
-rw-r--r--editor/code_editor.h3
2 files changed, 15 insertions, 0 deletions
diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp
index 03695419cb..285084a72b 100644
--- a/editor/code_editor.cpp
+++ b/editor/code_editor.cpp
@@ -31,6 +31,7 @@
#include "code_editor.h"
#include "core/input/input.h"
+#include "core/object/message_queue.h"
#include "core/os/keyboard.h"
#include "core/string/string_builder.h"
#include "editor/editor_scale.h"
@@ -1567,6 +1568,17 @@ void CodeTextEditor::_update_font() {
}
void CodeTextEditor::_on_settings_change() {
+ if (settings_changed) {
+ return;
+ }
+
+ settings_changed = true;
+ MessageQueue::get_singleton()->push_callable(callable_mp(this, &CodeTextEditor::_apply_settings_change));
+}
+
+void CodeTextEditor::_apply_settings_change() {
+ settings_changed = false;
+
_update_text_editor_theme();
_update_font();
diff --git a/editor/code_editor.h b/editor/code_editor.h
index 0e5a84b3d5..4cd4880df0 100644
--- a/editor/code_editor.h
+++ b/editor/code_editor.h
@@ -162,7 +162,10 @@ class CodeTextEditor : public VBoxContainer {
int error_line;
int error_column;
+ bool settings_changed = false;
+
void _on_settings_change();
+ void _apply_settings_change();
void _update_text_editor_theme();
void _update_font();