Improve zoom performance in Script and Shader editors
This commit is contained in:
@ -1813,9 +1813,6 @@ void CodeTextEditor::set_zoom_factor(float p_zoom_factor) {
|
|||||||
|
|
||||||
zoom_button->set_text(itos(Math::round(zoom_factor * 100)) + " %");
|
zoom_button->set_text(itos(Math::round(zoom_factor * 100)) + " %");
|
||||||
|
|
||||||
if (text_editor->has_theme_font_size_override(SceneStringName(font_size))) {
|
|
||||||
text_editor->remove_theme_font_size_override(SceneStringName(font_size));
|
|
||||||
}
|
|
||||||
text_editor->add_theme_font_size_override(SceneStringName(font_size), new_font_size);
|
text_editor->add_theme_font_size_override(SceneStringName(font_size), new_font_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4808,7 +4808,7 @@ void EditorNode::_update_recent_scenes() {
|
|||||||
recent_scenes->clear();
|
recent_scenes->clear();
|
||||||
|
|
||||||
if (rc.size() == 0) {
|
if (rc.size() == 0) {
|
||||||
recent_scenes->add_item(TTR("No Recent Scenes"), -1);
|
recent_scenes->add_item(TTRC("No Recent Scenes"), -1);
|
||||||
recent_scenes->set_item_disabled(-1, true);
|
recent_scenes->set_item_disabled(-1, true);
|
||||||
} else {
|
} else {
|
||||||
String path;
|
String path;
|
||||||
|
|||||||
@ -2625,7 +2625,8 @@ bool ScriptEditor::edit(const Ref<Resource> &p_resource, int p_line, int p_col,
|
|||||||
CodeTextEditor *cte = se->get_code_editor();
|
CodeTextEditor *cte = se->get_code_editor();
|
||||||
if (cte) {
|
if (cte) {
|
||||||
cte->set_zoom_factor(zoom_factor);
|
cte->set_zoom_factor(zoom_factor);
|
||||||
cte->connect("zoomed", callable_mp(this, &ScriptEditor::_set_zoom_factor));
|
cte->connect("zoomed", callable_mp(this, &ScriptEditor::_set_script_zoom_factor));
|
||||||
|
cte->connect(SceneStringName(visibility_changed), callable_mp(this, &ScriptEditor::_update_code_editor_zoom_factor).bind(cte));
|
||||||
}
|
}
|
||||||
|
|
||||||
//test for modification, maybe the script was not edited but was loaded
|
//test for modification, maybe the script was not edited but was loaded
|
||||||
@ -3558,7 +3559,7 @@ void ScriptEditor::set_window_layout(Ref<ConfigFile> p_layout) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_set_zoom_factor(p_layout->get_value("ScriptEditor", "zoom_factor", 1.0f));
|
_set_script_zoom_factor(p_layout->get_value("ScriptEditor", "zoom_factor", 1.0f));
|
||||||
|
|
||||||
restoring_layout = false;
|
restoring_layout = false;
|
||||||
|
|
||||||
@ -4057,21 +4058,17 @@ void ScriptEditor::_on_find_in_files_modified_files(const PackedStringArray &pat
|
|||||||
_update_modified_scripts_for_external_editor();
|
_update_modified_scripts_for_external_editor();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptEditor::_set_zoom_factor(float p_zoom_factor) {
|
void ScriptEditor::_set_script_zoom_factor(float p_zoom_factor) {
|
||||||
if (zoom_factor == p_zoom_factor) {
|
if (zoom_factor == p_zoom_factor) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
zoom_factor = p_zoom_factor;
|
zoom_factor = p_zoom_factor;
|
||||||
for (int i = 0; i < tab_container->get_tab_count(); i++) {
|
}
|
||||||
ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_tab_control(i));
|
|
||||||
if (se) {
|
void ScriptEditor::_update_code_editor_zoom_factor(CodeTextEditor *p_code_text_editor) {
|
||||||
CodeTextEditor *cte = se->get_code_editor();
|
if (p_code_text_editor && p_code_text_editor->is_visible_in_tree() && zoom_factor != p_code_text_editor->get_zoom_factor()) {
|
||||||
if (cte) {
|
p_code_text_editor->set_zoom_factor(zoom_factor);
|
||||||
if (zoom_factor != cte->get_zoom_factor()) {
|
|
||||||
cte->set_zoom_factor(zoom_factor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -537,7 +537,8 @@ class ScriptEditor : public PanelContainer {
|
|||||||
void _on_find_in_files_modified_files(const PackedStringArray &paths);
|
void _on_find_in_files_modified_files(const PackedStringArray &paths);
|
||||||
void _on_find_in_files_close_button_clicked();
|
void _on_find_in_files_close_button_clicked();
|
||||||
|
|
||||||
void _set_zoom_factor(float p_zoom_factor);
|
void _set_script_zoom_factor(float p_zoom_factor);
|
||||||
|
void _update_code_editor_zoom_factor(CodeTextEditor *p_code_text_editor);
|
||||||
|
|
||||||
void _window_changed(bool p_visible);
|
void _window_changed(bool p_visible);
|
||||||
|
|
||||||
|
|||||||
@ -188,6 +188,7 @@ void ShaderEditorPlugin::edit(Object *p_object) {
|
|||||||
if (cte) {
|
if (cte) {
|
||||||
cte->set_zoom_factor(text_shader_zoom_factor);
|
cte->set_zoom_factor(text_shader_zoom_factor);
|
||||||
cte->connect("zoomed", callable_mp(this, &ShaderEditorPlugin::_set_text_shader_zoom_factor));
|
cte->connect("zoomed", callable_mp(this, &ShaderEditorPlugin::_set_text_shader_zoom_factor));
|
||||||
|
cte->connect(SceneStringName(visibility_changed), callable_mp(this, &ShaderEditorPlugin::_update_shader_editor_zoom_factor).bind(cte));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (text_shader_editor->get_top_bar()) {
|
if (text_shader_editor->get_top_bar()) {
|
||||||
@ -768,17 +769,16 @@ void ShaderEditorPlugin::_window_changed(bool p_visible) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ShaderEditorPlugin::_set_text_shader_zoom_factor(float p_zoom_factor) {
|
void ShaderEditorPlugin::_set_text_shader_zoom_factor(float p_zoom_factor) {
|
||||||
if (text_shader_zoom_factor != p_zoom_factor) {
|
if (text_shader_zoom_factor == p_zoom_factor) {
|
||||||
text_shader_zoom_factor = p_zoom_factor;
|
return;
|
||||||
for (const EditedShader &edited_shader : edited_shaders) {
|
}
|
||||||
TextShaderEditor *text_shader_editor = Object::cast_to<TextShaderEditor>(edited_shader.shader_editor);
|
|
||||||
if (text_shader_editor) {
|
text_shader_zoom_factor = p_zoom_factor;
|
||||||
CodeTextEditor *cte = text_shader_editor->get_code_editor();
|
}
|
||||||
if (cte && cte->get_zoom_factor() != text_shader_zoom_factor) {
|
|
||||||
cte->set_zoom_factor(text_shader_zoom_factor);
|
void ShaderEditorPlugin::_update_shader_editor_zoom_factor(CodeTextEditor *p_shader_editor) const {
|
||||||
}
|
if (p_shader_editor && p_shader_editor->is_visible_in_tree() && text_shader_zoom_factor != p_shader_editor->get_zoom_factor()) {
|
||||||
}
|
p_shader_editor->set_zoom_factor(text_shader_zoom_factor);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -32,6 +32,7 @@
|
|||||||
|
|
||||||
#include "editor/plugins/editor_plugin.h"
|
#include "editor/plugins/editor_plugin.h"
|
||||||
|
|
||||||
|
class CodeTextEditor;
|
||||||
class HSplitContainer;
|
class HSplitContainer;
|
||||||
class ItemList;
|
class ItemList;
|
||||||
class MenuButton;
|
class MenuButton;
|
||||||
@ -125,6 +126,8 @@ class ShaderEditorPlugin : public EditorPlugin {
|
|||||||
void _window_changed(bool p_visible);
|
void _window_changed(bool p_visible);
|
||||||
|
|
||||||
void _set_text_shader_zoom_factor(float p_zoom_factor);
|
void _set_text_shader_zoom_factor(float p_zoom_factor);
|
||||||
|
void _update_shader_editor_zoom_factor(CodeTextEditor *p_shader_editor) const;
|
||||||
|
|
||||||
void _switch_to_editor(ShaderEditor *p_editor);
|
void _switch_to_editor(ShaderEditor *p_editor);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
Reference in New Issue
Block a user