diff --git a/src/lib/edc_editor.c b/src/lib/edc_editor.c index 48c3f5d..6090367 100644 --- a/src/lib/edc_editor.c +++ b/src/lib/edc_editor.c @@ -71,8 +71,10 @@ line_init(edit_data *ed) char buf[MAX_LINE_DIGIT_CNT]; ed->line_max = 1; + elm_entry_entry_set(ed->en_line, ""); snprintf(buf, sizeof(buf), "%d", ed->line_max); - elm_entry_entry_set(ed->en_line, buf); + elm_entry_entry_append(ed->en_line, buf); + elm_entry_entry_append(ed->en_line, ""); } static void @@ -762,7 +764,6 @@ edit_edc_load(edit_data *ed, const char *file_path) Eina_Stringshare *group_name = NULL; char *utf8_edit = NULL; char *markup_edit = NULL; - char *markup_line = NULL; int line_num = 1; Eina_Bool ret = EINA_FALSE; @@ -785,14 +786,13 @@ edit_edc_load(edit_data *ed, const char *file_path) { line_num++; ++p; - sprintf(buf, "\n%d", line_num); + sprintf(buf, "
%d", line_num); if (!eina_strbuf_append(strbuf_line, buf)) goto err; } + if (!eina_strbuf_prepend(strbuf_line, "")) goto err; + if (!eina_strbuf_append(strbuf_line, "")) goto err; - markup_line = elm_entry_utf8_to_markup(eina_strbuf_string_get(strbuf_line)); - if (!markup_line) goto err; - elm_entry_entry_append(ed->en_line, markup_line); - free(markup_line); + elm_entry_entry_append(ed->en_line, eina_strbuf_string_get(strbuf_line)); markup_edit = elm_entry_utf8_to_markup(utf8_edit); if (!markup_edit) goto err; @@ -1050,7 +1050,6 @@ edit_init(Evas_Object *enventor) //Line Number Entry Evas_Object *en_line = elm_entry_add(layout); - evas_object_color_set(en_line, 101, 101, 101, 255); elm_entry_editable_set(en_line, EINA_FALSE); elm_entry_line_wrap_set(en_line, ELM_WRAP_NONE); elm_object_focus_allow_set(en_line, EINA_FALSE); @@ -1247,15 +1246,38 @@ edit_entry_get(edit_data *ed) void edit_line_increase(edit_data *ed, int cnt) { + char *utf8_line; + char *markup_line; char buf[MAX_LINE_DIGIT_CNT]; int i; + //Prepend the max line number again to preserve markup. + Evas_Object *textblock = elm_entry_textblock_get(ed->en_line); + Evas_Textblock_Cursor *cur1 = evas_object_textblock_cursor_new(textblock); + evas_textblock_cursor_paragraph_last(cur1); + evas_textblock_cursor_paragraph_prev(cur1); + + if (ed->line_max == 1) + snprintf(buf, sizeof(buf), "%d", ed->line_max); + else + snprintf(buf, sizeof(buf), "
%d", ed->line_max); + evas_object_textblock_text_markup_prepend(cur1, buf); + + //Prepend new line numbers. for (i = 0; i < cnt; i++) { ed->line_max++; snprintf(buf, sizeof(buf), "
%d", ed->line_max); - elm_entry_entry_append(ed->en_line, buf); + evas_object_textblock_text_markup_prepend(cur1, buf); } + + //Remove the duplicated max line number. + Evas_Textblock_Cursor *cur2 = evas_object_textblock_cursor_new(textblock); + evas_textblock_cursor_paragraph_last(cur2); + evas_textblock_cursor_range_delete(cur1, cur2); + evas_textblock_cursor_free(cur1); + evas_textblock_cursor_free(cur2); + elm_entry_calc_force(ed->en_line); Enventor_Max_Line max_line;