edc_editor: optimize bracket logic.

we don't need to apply bracket everytime.
Previously brackets didn't applied and current brackets are no valid either
then skip to apply bracket highlighting function.
This commit is contained in:
Hermet Park 2016-02-11 14:57:50 +09:00
parent 7811da09b0
commit 7250db0b10
1 changed files with 13 additions and 7 deletions

View File

@ -44,8 +44,8 @@ struct editor_s
struct {
int prev_left;
int prev_right;
int left;
int right;
int left; //-1: cancel bracket, -2: don't apply bracket.
int right; //-1: cancel bracket, -2: don't apply bracket.
} bracket;
Ecore_Timer *syntax_color_timer;
@ -223,6 +223,9 @@ error_highlight(edit_data *ed, Evas_Object *tb)
static void
bracket_highlight(edit_data *ed, Evas_Object *tb)
{
if ((ed->bracket.left == -2) && (ed->bracket.right == -2))
return;
Evas_Textblock_Cursor *cur1 = evas_object_textblock_cursor_new(tb);
evas_textblock_cursor_pos_set(cur1, ed->bracket.left);
@ -236,6 +239,9 @@ bracket_highlight(edit_data *ed, Evas_Object *tb)
evas_object_textblock_text_markup_prepend(cur1, "</hilight>");
evas_textblock_cursor_free(cur1);
if (ed->bracket.left == -1) ed->bracket.left = -2;
if (ed->bracket.right == -1) ed->bracket.right = -2;
}
static void
@ -392,7 +398,7 @@ bracket_update(edit_data *ed)
if (ch1 != '{' && ch1 != '}' && ch2 != '{' && ch2 != '}')
{
if (ed->bracket.prev_left != -1 && ed->bracket.prev_right != -1)
if ((ed->bracket.prev_left > -1) && (ed->bracket.prev_right > -1))
{
//initialize bracket
ed->bracket.left = -1;
@ -1329,10 +1335,10 @@ edit_init(Evas_Object *enventor)
ed->pd = pd;
ed->sh = sh;
ed->error_line = -1;
ed->bracket.prev_left = -1;
ed->bracket.prev_right = -1;
ed->bracket.left = -1;
ed->bracket.right = -1;
ed->bracket.prev_left = -2;
ed->bracket.prev_right = -2;
ed->bracket.left = -2;
ed->bracket.right = -2;
ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, key_down_cb, ed);
ecore_event_handler_add(ECORE_EVENT_KEY_UP, key_up_cb, ed);