From 242b94af1aa87d9c255a7cb1747049fc1da107e5 Mon Sep 17 00:00:00 2001 From: PouleyKetchoupp Date: Sat, 16 May 2020 23:23:46 +0200 Subject: [PATCH] TextEdit search returns a dictionary instead of Vector Easier to use than accessing elements in a Vector using indices given by an enum. Breaks compatibility on existing scripts using this functionality. --- doc/classes/TextEdit.xml | 16 +++++----------- scene/gui/text_edit.cpp | 14 +++++--------- scene/gui/text_edit.h | 8 +------- 3 files changed, 11 insertions(+), 27 deletions(-) diff --git a/doc/classes/TextEdit.xml b/doc/classes/TextEdit.xml index e553518b396..0c6615c53ba 100644 --- a/doc/classes/TextEdit.xml +++ b/doc/classes/TextEdit.xml @@ -299,7 +299,7 @@ - + @@ -311,13 +311,13 @@ Perform a search inside the text. Search flags can be specified in the [enum SearchFlags] enum. - Returns an empty [code]PackedInt32Array[/code] if no result was found. Otherwise, the result line and column can be accessed at indices specified in the [enum SearchResult] enum, e.g: + Returns an empty [code]Dictionary[/code] if no result was found. Otherwise, returns a [code]Dictionary[/code] containing [code]line[/code] and [code]column[/code] entries, e.g: [codeblock] var result = search(key, flags, line, column) - if result.size() > 0: + if !result.empty(): # Result found. - var res_line = result[TextEdit.SEARCH_RESULT_LINE] - var res_column = result[TextEdit.SEARCH_RESULT_COLUMN] + var line_number = result.line + var column_number = result.column [/codeblock] @@ -536,12 +536,6 @@ Search from end to beginning. - - Used to access the result column from [method search]. - - - Used to access the result line from [method search]. - Cuts (copies and clears) the selected text. diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 932dda2f9da..e050b3f1741 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -5447,17 +5447,16 @@ int TextEdit::_get_column_pos_of_word(const String &p_key, const String &p_searc return col; } -Vector TextEdit::_search_bind(const String &p_key, uint32_t p_search_flags, int p_from_line, int p_from_column) const { +Dictionary TextEdit::_search_bind(const String &p_key, uint32_t p_search_flags, int p_from_line, int p_from_column) const { int col, line; if (search(p_key, p_search_flags, p_from_line, p_from_column, line, col)) { - Vector result; - result.resize(2); - result.set(SEARCH_RESULT_COLUMN, col); - result.set(SEARCH_RESULT_LINE, line); + Dictionary result; + result["line"] = line; + result["column"] = col; return result; } else { - return Vector(); + return Dictionary(); } } @@ -6980,9 +6979,6 @@ void TextEdit::_bind_methods() { BIND_ENUM_CONSTANT(SEARCH_WHOLE_WORDS); BIND_ENUM_CONSTANT(SEARCH_BACKWARDS); - BIND_ENUM_CONSTANT(SEARCH_RESULT_COLUMN); - BIND_ENUM_CONSTANT(SEARCH_RESULT_LINE); - /* ClassDB::bind_method(D_METHOD("delete_char"),&TextEdit::delete_char); ClassDB::bind_method(D_METHOD("delete_line"),&TextEdit::delete_line); diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h index 689199b6c2d..ab78f77d948 100644 --- a/scene/gui/text_edit.h +++ b/scene/gui/text_edit.h @@ -508,7 +508,7 @@ private: int _get_column_pos_of_word(const String &p_key, const String &p_search, uint32_t p_search_flags, int p_from_column); - Vector _search_bind(const String &p_key, uint32_t p_search_flags, int p_from_line, int p_from_column) const; + Dictionary _search_bind(const String &p_key, uint32_t p_search_flags, int p_from_line, int p_from_column) const; PopupMenu *menu; @@ -561,11 +561,6 @@ public: SEARCH_BACKWARDS = 4 }; - enum SearchResult { - SEARCH_RESULT_COLUMN, - SEARCH_RESULT_LINE, - }; - virtual CursorShape get_cursor_shape(const Point2 &p_pos = Point2i()) const; void _get_mouse_pos(const Point2i &p_mouse, int &r_row, int &r_col) const; @@ -826,7 +821,6 @@ public: VARIANT_ENUM_CAST(TextEdit::MenuItems); VARIANT_ENUM_CAST(TextEdit::SearchFlags); -VARIANT_ENUM_CAST(TextEdit::SearchResult); class SyntaxHighlighter { protected: