editor: search wrapping inconsistencies fix.

This commit is contained in:
Al Poole 2017-12-09 12:01:33 +00:00
parent a4cd836def
commit c4ae6c751e
1 changed files with 21 additions and 9 deletions

View File

@ -40,7 +40,7 @@ struct _Edi_Editor_Search
Evas_Object *widget; /**< The search UI panel we wish to show and hide */
Evas_Object *parent; /**< The parent panel we will insert into */
Evas_Object *checkbox; /**< The checkbox for wrapping search */
Evas_Object *wrapped; /**< A display that shows the user that the search wrapped */
Evas_Object *wrapped_text; /**< A display that shows the user that the search wrapped */
unsigned int current_search_line; /**< The current search cursor line for this session */
unsigned int current_search_col; /**< The current search cursor column for this session */
Eina_Bool term_found;
@ -49,6 +49,7 @@ struct _Edi_Editor_Search
Evas_Object *replace_btn; /**< The replace button for our search */
struct _Edi_Search_Result cache; /**< The first found search instance */
/* Add new members here. */
Eina_Bool wrapped;
};
static void
@ -225,17 +226,28 @@ _edi_search_in_entry(Evas_Object *entry, Edi_Editor_Search *search)
// EOF reached so go to search found before cursor (first inst).
if (search->wrap && !search->term_found && _edi_search_cache_exists(search))
{
evas_object_show(search->wrapped);
elm_code_widget_cursor_position_set(entry, 1, 1);
elm_code_widget_cursor_position_set(entry, 0, 0);
elm_code_widget_selection_clear(entry);
line = elm_code_file_line_get(elm_code_widget_code_get(entry)->file, 1);
_edi_search_cache_reset(search);
_edi_search_cache_use(search, &text, &line, &found);
search->wrapped = EINA_TRUE;
_edi_search_in_entry(entry, search);
free(text);
return EINA_TRUE;
}
else
evas_object_hide(search->wrapped);
{
if (search->wrapped)
{
evas_object_show(search->wrapped_text);
search->wrapped = EINA_FALSE;
}
else
{
evas_object_hide(search->wrapped_text);
}
}
line = elm_code_file_line_get(elm_code_widget_code_get(entry)->file, search->current_search_line);
elm_code_widget_cursor_position_set(entry, search->current_search_line,
@ -420,7 +432,7 @@ _edi_search_key_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj,
void
edi_editor_search_add(Evas_Object *parent, Edi_Editor *editor)
{
Evas_Object *entry, *wrapped, *lbl, *btn, *box, *big_box, *table;
Evas_Object *entry, *wrapped_text, *lbl, *btn, *box, *big_box, *table;
Evas_Object *replace_entry, *replace_lbl, *replace_btn;
Evas_Object *checkbox;
Edi_Editor_Search *search;
@ -487,9 +499,9 @@ edi_editor_search_add(Evas_Object *parent, Edi_Editor *editor)
evas_object_event_callback_add(entry, EVAS_CALLBACK_KEY_UP, _edi_search_key_up_cb, editor);
wrapped = elm_label_add(parent);
elm_object_text_set(wrapped, _("Reached end of file, starting from beginning"));
elm_box_pack_end(box, wrapped);
wrapped_text = elm_label_add(parent);
elm_object_text_set(wrapped_text, _("Reached end of file, starting from beginning"));
elm_box_pack_end(box, wrapped_text);
checkbox = elm_check_add(parent);
elm_object_text_set(checkbox, _("Wrap search?"));
@ -523,7 +535,7 @@ edi_editor_search_add(Evas_Object *parent, Edi_Editor *editor)
search = calloc(1, sizeof(*search));
search->entry = entry;
search->wrapped = wrapped;
search->wrapped_text = wrapped_text;
search->replace_entry = replace_entry;
search->replace_btn = replace_btn;
search->parent = parent;