ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/edi.git/commit/?id=7e62826b59da389c0306839a3d439a15f6fc2761

commit 7e62826b59da389c0306839a3d439a15f6fc2761
Author: Andy Williams <a...@andywilliams.me>
Date:   Wed Sep 16 10:44:38 2015 +0100

    [editor] Fix indenting of newlines
    
    Changes in memory handling of line splits broke this
    in some cases (like tapping return twice).
---
 elm_code/src/lib/widget/elm_code_widget.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/elm_code/src/lib/widget/elm_code_widget.c 
b/elm_code/src/lib/widget/elm_code_widget.c
index fe6430e..ee3ca73 100644
--- a/elm_code/src/lib/widget/elm_code_widget.c
+++ b/elm_code/src/lib/widget/elm_code_widget.c
@@ -140,7 +140,7 @@ _elm_code_widget_resize(Elm_Code_Widget *widget)
    evas_object_size_hint_min_set(pd->grid, w*cw, h*ch);
 
    if (pd->gravity_x == 1.0 || pd->gravity_y == 1.0)
-     _elm_code_widget_scroll_by(widget, 
+     _elm_code_widget_scroll_by(widget,
         (pd->gravity_x == 1.0 && ww > old_width) ? ww - old_width : 0,
         (pd->gravity_y == 1.0 && wh > old_height) ? wh - old_height : 0);
 }
@@ -993,7 +993,7 @@ _elm_code_widget_newline(Elm_Code_Widget *widget)
    Elm_Code *code;
    Elm_Code_Line *line;
    unsigned int row, col, position, oldlen, leading;
-   const char *oldtext;
+   char *oldtext;
 
    _elm_code_widget_delete_selection(widget);
    eo_do(widget,
@@ -1006,7 +1006,8 @@ _elm_code_widget_newline(Elm_Code_Widget *widget)
         row = elm_code_file_lines_get(code->file);
         line = elm_code_file_line_get(code->file, row);
      }
-   oldtext = elm_code_line_text_get(line, &oldlen);
+   oldtext = (char *) elm_code_line_text_get(line, &oldlen);
+   oldtext = strndup(oldtext, oldlen);
 
    position = elm_code_widget_line_text_position_for_column_get(widget, line, 
col);
    elm_code_line_split_at(line, position);
@@ -1014,6 +1015,7 @@ _elm_code_widget_newline(Elm_Code_Widget *widget)
    line = elm_code_file_line_get(code->file, row + 1);
    leading = elm_code_text_leading_whitespace_length(oldtext, oldlen);
    elm_code_line_text_insert(line, 0, oldtext, leading);
+   free(oldtext);
 
    eo_do(widget,
          elm_obj_code_widget_cursor_position_set(
@@ -1551,7 +1553,7 @@ _elm_code_widget_evas_object_smart_add(Eo *obj, 
Elm_Code_Widget_Data *pd)
    elm_object_focus_allow_set(scroller, EINA_FALSE);
    pd->scroller = scroller;
 
-   grid = evas_object_textgrid_add(obj); 
+   grid = evas_object_textgrid_add(obj);
    evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
    evas_object_show(grid);

-- 


Reply via email to