diff options
author | Andy Williams <andy@andywilliams.me> | 2017-04-06 22:16:27 +0100 |
---|---|---|
committer | Andy Williams <andy@andywilliams.me> | 2017-04-06 22:16:27 +0100 |
commit | e44c33f233130525e538c313ff6aa2489d4741f8 (patch) | |
tree | 42afe35a110ccd59ac3e1d87d14cce48c0c264c5 | |
parent | 8c93a207c1cb447e84285108086c23a3f8afe4e3 (diff) | |
download | efl-e44c33f233130525e538c313ff6aa2489d4741f8.tar.gz |
elm_code: Fix bug when deleting slection beyond start of document.
@fix
-rw-r--r-- | src/lib/elementary/elm_code_widget.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/lib/elementary/elm_code_widget.c b/src/lib/elementary/elm_code_widget.c index ca0d1db3b4..7fdcd68bd1 100644 --- a/src/lib/elementary/elm_code_widget.c +++ b/src/lib/elementary/elm_code_widget.c @@ -654,7 +654,7 @@ _elm_code_widget_position_at_coordinates_get(Eo *obj, Elm_Code_Widget_Data *pd, Evas_Coord ox = 0, oy = 0, sx = 0, sy = 0, rowy = 0; Evas_Object *grid; int cw = 0, ch = 0, gutter, retcol; - unsigned int guess = 1, number; + unsigned int guess = 1, number = 1; widget = (Elm_Code_Widget *)obj; evas_object_geometry_get(widget, &ox, &oy, NULL, NULL); @@ -667,19 +667,22 @@ _elm_code_widget_position_at_coordinates_get(Eo *obj, Elm_Code_Widget_Data *pd, if (y >= 0 && ch > 0) guess = ((double) y / ch) + 1; - number = guess; - - // unfortunately EINA_LIST_REVERSE_FOREACH skips to the end of the list... - for (item = eina_list_nth_list(pd->grids, guess - 1), grid = eina_list_data_get(item); - item; - item = eina_list_prev(item), grid = eina_list_data_get(item)) + if (guess > 1) { - evas_object_geometry_get(grid, NULL, &rowy, NULL, NULL); + number = guess; - if (rowy + sy - oy - 1<= y) - break; + // unfortunately EINA_LIST_REVERSE_FOREACH skips to the end of the list... + for (item = eina_list_nth_list(pd->grids, number), grid = eina_list_data_get(item); + number > 1 && item; + item = eina_list_prev(item), grid = eina_list_data_get(item)) + { + evas_object_geometry_get(grid, NULL, &rowy, NULL, NULL); - number--; + if (rowy + sy - oy - 1<= y) + break; + + number--; + } } if (col) |