hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=dc85cafc7d119056c123b5428508980a2d58ffdd
commit dc85cafc7d119056c123b5428508980a2d58ffdd Author: Mykyta Biliavskyi <m.biliavs...@samsung.com> Date: Tue Jun 23 08:16:01 2015 +0900 Autocomplete: add attribute "dot" for lexems. Summary: Attribute "dot" make possible to mark lexems, that can use the '.' symbol. Like image.normal: "bla"; This commit fix issue, when pressing '.' after any keyword was shown candidate list. Reviewers: Hermet Differential Revision: https://phab.enlightenment.org/D2709 --- data/autocomp/autocomp.src | 6 ++++++ src/lib/auto_comp.c | 12 +++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/data/autocomp/autocomp.src b/data/autocomp/autocomp.src index 18ce6f4..d757a30 100644 --- a/data/autocomp/autocomp.src +++ b/data/autocomp/autocomp.src @@ -154,6 +154,7 @@ group "lexem" struct { value "cursor_offset" int: 2; value "line_back" int: 1; value "name" string: "images"; + value "dot" int: 1; } group "lexem" struct { group "nodes" list { @@ -925,6 +926,7 @@ group "lexem" struct { value "cursor_offset" int: 2; value "line_back" int: 1; value "name" string: "image"; + value "dot" int: 1; } group "lexem" struct { group "nodes" list { @@ -1219,6 +1221,7 @@ group "lexem" struct { value "cursor_offset" int: 2; value "line_back" int: 1; value "name" string: "rel1"; + value "dot" int: 1; } group "lexem" struct { group "nodes" list { @@ -1287,6 +1290,7 @@ group "lexem" struct { value "cursor_offset" int: 2; value "line_back" int: 1; value "name" string: "rel2"; + value "dot" int: 1; } group "lexem" struct { group "nodes" list { @@ -1533,6 +1537,7 @@ group "lexem" struct { value "cursor_offset" int: 2; value "line_back" int: 1; value "name" string: "text"; + value "dot" int: 1; } group "lexem" struct { group "nodes" list { @@ -2364,6 +2369,7 @@ group "lexem" struct { value "cursor_offset" int: 2; value "line_back" int: 1; value "name" string: "images"; + value "dot" int: 1; } group "lexem" struct { group "nodes" list { diff --git a/src/lib/auto_comp.c b/src/lib/auto_comp.c index ca2b3e2..b098173 100644 --- a/src/lib/auto_comp.c +++ b/src/lib/auto_comp.c @@ -18,6 +18,7 @@ typedef struct lexem_s int cursor_offset; int line_back; char *name; + int dot; } lexem; typedef struct autocomp_s @@ -35,6 +36,7 @@ typedef struct autocomp_s Eina_Bool initialized : 1; Eina_Bool enabled : 1; Ecore_Thread *cntx_lexem_thread; + Eina_Bool dot_candidate : 1; } autocomp_data; typedef struct ctx_lexem_thread_data_s @@ -70,6 +72,7 @@ eddc_init(void) EET_DATA_DESCRIPTOR_ADD_BASIC(lex_desc, lexem, "cursor_offset", cursor_offset, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(lex_desc, lexem, "line_back", line_back, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(lex_desc, lexem, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(lex_desc, lexem, "dot", dot, EET_T_INT); } static void @@ -267,8 +270,9 @@ context_lexem_thread_end_cb(void *data, Ecore_Thread *thread EINA_UNUSED) if (td->ad->cntx_lexem_thread == thread) td->ad->cntx_lexem_thread = NULL; - if (td->list_show && td->result) + if (td->list_show || (td->result && td->result->dot && td->ad->dot_candidate)) candidate_list_show(td->ad); + td->ad->dot_candidate = EINA_FALSE; free(td->utf8); free(td); } @@ -279,10 +283,11 @@ context_lexem_thread_cancel_cb(void *data, Ecore_Thread *thread EINA_UNUSED) ctx_lexem_td *td = (ctx_lexem_td *)data; td->ad->lexem_ptr = td->result ? td->result : (lexem *)td->ad->lexem_root; - if (td->list_show && td->result) + if (td->list_show || (td->result && td->result->dot && td->ad->dot_candidate)) candidate_list_show(td->ad); if (td->ad->cntx_lexem_thread == thread) td->ad->cntx_lexem_thread = NULL; + td->ad->dot_candidate = EINA_FALSE; free(td->utf8); free(td); } @@ -582,7 +587,8 @@ entry_changed_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, { if (info->change.insert.content[0] == '.' && ad->queue_pos > 2) { - context_lexem_get(ad, obj, EINA_TRUE); + ad->dot_candidate = EINA_TRUE; + context_lexem_get(ad, obj, EINA_FALSE); } queue_reset(ad); } --