diff options
Diffstat (limited to 'editor')
-rw-r--r-- | editor/code_editor.cpp | 6 | ||||
-rw-r--r-- | editor/plugins/script_editor_plugin.cpp | 4 | ||||
-rw-r--r-- | editor/plugins/script_editor_plugin.h | 4 | ||||
-rw-r--r-- | editor/plugins/script_text_editor.cpp | 24 | ||||
-rw-r--r-- | editor/plugins/script_text_editor.h | 6 | ||||
-rw-r--r-- | editor/plugins/text_editor.cpp | 23 | ||||
-rw-r--r-- | editor/plugins/text_editor.h | 6 |
7 files changed, 31 insertions, 42 deletions
diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp index 70747b4956..9e1a5f2d43 100644 --- a/editor/code_editor.cpp +++ b/editor/code_editor.cpp @@ -1408,9 +1408,9 @@ Variant CodeTextEditor::get_edit_state() { state["bookmarks"] = text_editor->get_bookmarks_array(); state["syntax_highlighter"] = TTR("Standard"); - SyntaxHighlighter *syntax_highlighter = text_editor->_get_syntax_highlighting(); - if (syntax_highlighter) { - state["syntax_highlighter"] = syntax_highlighter->get_name(); + Ref<SyntaxHighlighter> syntax_highlighter = text_editor->get_syntax_highlighting(); + if (syntax_highlighter.is_valid()) { + state["syntax_highlighter"] = syntax_highlighter->_get_name(); } return state; diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index 8386d44e69..3f17f1166f 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -2024,8 +2024,8 @@ bool ScriptEditor::edit(const RES &p_resource, int p_line, int p_col, bool p_gra se->add_syntax_highlighter(highlighter); if (script != nullptr && !highlighter_set) { - List<String> languages = highlighter->get_supported_languages(); - if (languages.find(script->get_language()->get_name())) { + Array languages = highlighter->_get_supported_languages(); + if (languages.find(script->get_language()->get_name()) > -1) { se->set_syntax_highlighter(highlighter); highlighter_set = true; } diff --git a/editor/plugins/script_editor_plugin.h b/editor/plugins/script_editor_plugin.h index d51c95ec4b..9f9f51de5d 100644 --- a/editor/plugins/script_editor_plugin.h +++ b/editor/plugins/script_editor_plugin.h @@ -80,8 +80,8 @@ protected: static void _bind_methods(); public: - virtual void add_syntax_highlighter(SyntaxHighlighter *p_highlighter) = 0; - virtual void set_syntax_highlighter(SyntaxHighlighter *p_highlighter) = 0; + virtual void add_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) = 0; + virtual void set_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) = 0; virtual void apply_code() = 0; virtual RES get_edited_resource() const = 0; diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp index 9304683d77..a9898dafe5 100644 --- a/editor/plugins/script_text_editor.cpp +++ b/editor/plugins/script_text_editor.cpp @@ -1380,28 +1380,27 @@ void ScriptTextEditor::_edit_option_toggle_inline_comment() { code_editor->toggle_inline_comment(delimiter); } -void ScriptTextEditor::add_syntax_highlighter(SyntaxHighlighter *p_highlighter) { - highlighters[p_highlighter->get_name()] = p_highlighter; - highlighter_menu->add_radio_check_item(p_highlighter->get_name()); +void ScriptTextEditor::add_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) { + highlighters[p_highlighter->_get_name()] = p_highlighter; + highlighter_menu->add_radio_check_item(p_highlighter->_get_name()); } -void ScriptTextEditor::set_syntax_highlighter(SyntaxHighlighter *p_highlighter) { +void ScriptTextEditor::set_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) { TextEdit *te = code_editor->get_text_edit(); - te->_set_syntax_highlighting(p_highlighter); - if (p_highlighter != nullptr) { - highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(p_highlighter->get_name()), true); + te->set_syntax_highlighting(p_highlighter); + if (p_highlighter.is_valid()) { + highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(p_highlighter->_get_name()), true); } else { highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(TTR("Standard")), true); } } void ScriptTextEditor::_change_syntax_highlighter(int p_idx) { - Map<String, SyntaxHighlighter *>::Element *el = highlighters.front(); + Map<String, Ref<SyntaxHighlighter> >::Element *el = highlighters.front(); while (el != nullptr) { highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(el->key()), false); el = el->next(); } - // highlighter_menu->set_item_checked(p_idx, true); set_syntax_highlighter(highlighters[highlighter_menu->get_item_text(p_idx)]); } @@ -1825,7 +1824,7 @@ ScriptTextEditor::ScriptTextEditor() { convert_case->add_shortcut(ED_SHORTCUT("script_text_editor/capitalize", TTR("Capitalize"), KEY_MASK_SHIFT | KEY_F6), EDIT_CAPITALIZE); convert_case->connect("id_pressed", callable_mp(this, &ScriptTextEditor::_edit_option)); - highlighters[TTR("Standard")] = nullptr; + highlighters[TTR("Standard")] = Ref<SyntaxHighlighter>(); highlighter_menu = memnew(PopupMenu); highlighter_menu->set_name("highlighter_menu"); edit_menu->get_popup()->add_child(highlighter_menu); @@ -1891,11 +1890,6 @@ ScriptTextEditor::ScriptTextEditor() { } ScriptTextEditor::~ScriptTextEditor() { - for (const Map<String, SyntaxHighlighter *>::Element *E = highlighters.front(); E; E = E->next()) { - if (E->get() != nullptr) { - memdelete(E->get()); - } - } highlighters.clear(); } diff --git a/editor/plugins/script_text_editor.h b/editor/plugins/script_text_editor.h index a8d7f80e7b..d9ba579102 100644 --- a/editor/plugins/script_text_editor.h +++ b/editor/plugins/script_text_editor.h @@ -164,7 +164,7 @@ protected: void _notification(int p_what); static void _bind_methods(); - Map<String, SyntaxHighlighter *> highlighters; + Map<String, Ref<SyntaxHighlighter> > highlighters; void _change_syntax_highlighter(int p_idx); void _edit_option(int p_op); @@ -190,8 +190,8 @@ protected: public: void _update_connected_methods(); - virtual void add_syntax_highlighter(SyntaxHighlighter *p_highlighter) override; - virtual void set_syntax_highlighter(SyntaxHighlighter *p_highlighter) override; + virtual void add_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) override; + virtual void set_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) override; void update_toggle_scripts_button(); virtual void apply_code() override; diff --git a/editor/plugins/text_editor.cpp b/editor/plugins/text_editor.cpp index 3ceb9bfd82..071a46b5ee 100644 --- a/editor/plugins/text_editor.cpp +++ b/editor/plugins/text_editor.cpp @@ -33,16 +33,16 @@ #include "core/os/keyboard.h" #include "editor/editor_node.h" -void TextEditor::add_syntax_highlighter(SyntaxHighlighter *p_highlighter) { - highlighters[p_highlighter->get_name()] = p_highlighter; - highlighter_menu->add_radio_check_item(p_highlighter->get_name()); +void TextEditor::add_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) { + highlighters[p_highlighter->_get_name()] = p_highlighter; + highlighter_menu->add_radio_check_item(p_highlighter->_get_name()); } -void TextEditor::set_syntax_highlighter(SyntaxHighlighter *p_highlighter) { +void TextEditor::set_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) { TextEdit *te = code_editor->get_text_edit(); - te->_set_syntax_highlighting(p_highlighter); - if (p_highlighter != nullptr) { - highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(p_highlighter->get_name()), true); + te->set_syntax_highlighting(p_highlighter); + if (p_highlighter.is_valid()) { + highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(p_highlighter->_get_name()), true); } else { highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text("Standard"), true); } @@ -61,7 +61,7 @@ void TextEditor::set_syntax_highlighter(SyntaxHighlighter *p_highlighter) { } void TextEditor::_change_syntax_highlighter(int p_idx) { - Map<String, SyntaxHighlighter *>::Element *el = highlighters.front(); + Map<String, Ref<SyntaxHighlighter> >::Element *el = highlighters.front(); while (el != nullptr) { highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(el->key()), false); el = el->next(); @@ -634,7 +634,7 @@ TextEditor::TextEditor() { convert_case->add_shortcut(ED_SHORTCUT("script_text_editor/capitalize", TTR("Capitalize")), EDIT_CAPITALIZE); convert_case->connect("id_pressed", callable_mp(this, &TextEditor::_edit_option)); - highlighters["Standard"] = nullptr; + highlighters["Standard"] = Ref<SyntaxHighlighter>(); highlighter_menu = memnew(PopupMenu); highlighter_menu->set_name("highlighter_menu"); edit_menu->get_popup()->add_child(highlighter_menu); @@ -666,11 +666,6 @@ TextEditor::TextEditor() { } TextEditor::~TextEditor() { - for (const Map<String, SyntaxHighlighter *>::Element *E = highlighters.front(); E; E = E->next()) { - if (E->get() != nullptr) { - memdelete(E->get()); - } - } highlighters.clear(); } diff --git a/editor/plugins/text_editor.h b/editor/plugins/text_editor.h index 5af020eabe..0db8f70a85 100644 --- a/editor/plugins/text_editor.h +++ b/editor/plugins/text_editor.h @@ -104,7 +104,7 @@ protected: void _make_context_menu(bool p_selection, bool p_can_fold, bool p_is_folded, Vector2 p_position); void _text_edit_gui_input(const Ref<InputEvent> &ev); - Map<String, SyntaxHighlighter *> highlighters; + Map<String, Ref<SyntaxHighlighter> > highlighters; void _change_syntax_highlighter(int p_idx); void _load_theme_settings(); @@ -116,8 +116,8 @@ protected: void _bookmark_item_pressed(int p_idx); public: - virtual void add_syntax_highlighter(SyntaxHighlighter *p_highlighter) override; - virtual void set_syntax_highlighter(SyntaxHighlighter *p_highlighter) override; + virtual void add_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) override; + virtual void set_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) override; virtual String get_name() override; virtual Ref<Texture2D> get_theme_icon() override; |