summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bin/edje/edje_cc.h1
-rw-r--r--src/bin/edje/edje_cc_handlers.c27
-rw-r--r--src/bin/edje/edje_cc_out.c32
-rw-r--r--src/bin/edje/edje_cc_parse.c8
4 files changed, 52 insertions, 16 deletions
diff --git a/src/bin/edje/edje_cc.h b/src/bin/edje/edje_cc.h
index aec77a4587..afb7a99c03 100644
--- a/src/bin/edje/edje_cc.h
+++ b/src/bin/edje/edje_cc.h
@@ -167,6 +167,7 @@ struct _Edje_Part_Collection_Parser
Eina_Bool default_mouse_events;
Eina_Bool inherit_only;
Eina_Bool inherit_script : 1;
+ Eina_Bool skip_namespace_validation : 1;
};
typedef enum
diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c
index 6d987edb8f..17b3ce3768 100644
--- a/src/bin/edje/edje_cc_handlers.c
+++ b/src/bin/edje/edje_cc_handlers.c
@@ -257,6 +257,7 @@ static void st_collections_base_scale(void);
static void ob_collections_group(void);
static void st_collections_group_name(void);
+static void st_collections_group_skip_namespace_validation(void);
static void st_collections_group_inherit_only(void);
static void st_collections_group_inherit(void);
static void st_collections_group_program_source(void);
@@ -749,6 +750,7 @@ New_Statement_Handler statement_handlers[] =
}, /* dup */
{"collections.group.vibrations.sample.source", st_collections_group_vibration_sample_source}, /* dup */
{"collections.group.name", st_collections_group_name},
+ {"collections.group.skip_namespace_validation", st_collections_group_skip_namespace_validation},
{"collections.group.program_source", st_collections_group_program_source},
{"collections.group.inherit", st_collections_group_inherit},
{"collections.group.inherit_only", st_collections_group_inherit_only},
@@ -4521,6 +4523,30 @@ st_collections_group_name(void)
_group_name(parse_str(0));
}
+/**
+ @page edcref
+ @property
+ skip_namespace_validation
+ @parameters
+ [1 or 0]
+ @effect
+ This disables namespace validation for the current group if validation has
+ been enabled with edje_cc's -N option.
+ This property can be inherited.
+ Defaults: 0
+
+ @warning Your edc file should always wrap this keyword with #ifdef HAVE_SKIP_NAMESPACE_VALIDATION
+ @since 1.21
+ @endproperty
+ */
+static void
+st_collections_group_skip_namespace_validation(void)
+{
+ Edje_Part_Collection_Parser *pcp = eina_list_last_data_get(edje_collections);
+ check_arg_count(1);
+ pcp->skip_namespace_validation = parse_bool(0);
+}
+
typedef struct _Edje_List_Foreach_Data Edje_List_Foreach_Data;
struct _Edje_List_Foreach_Data
{
@@ -5170,6 +5196,7 @@ st_collections_group_inherit(void)
pcp = (Edje_Part_Collection_Parser *)pc;
pcp2 = (Edje_Part_Collection_Parser *)pc2;
pcp->default_mouse_events = pcp2->default_mouse_events;
+ pcp->skip_namespace_validation = pcp2->skip_namespace_validation;
if (pcp2->inherit_script)
pcp->inherit_script = pcp2->inherit_script;
diff --git a/src/bin/edje/edje_cc_out.c b/src/bin/edje/edje_cc_out.c
index 4d21668368..a28cc48505 100644
--- a/src/bin/edje/edje_cc_out.c
+++ b/src/bin/edje/edje_cc_out.c
@@ -631,6 +631,7 @@ _part_namespace_verify(Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef EIN
static void
check_part(Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef)
{
+ Edje_Part_Collection_Parser *pcp = (Edje_Part_Collection_Parser*)pc;
unsigned int i;
Eina_List *group_path = NULL;
/* FIXME: check image set and sort them. */
@@ -662,19 +663,22 @@ check_part(Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef)
check_text_part_desc(pc, ep, (Edje_Part_Description_Text *)ep->other.desc[i], ef);
}
- switch (ep->type)
+ if (!pcp->skip_namespace_validation)
{
- case EDJE_PART_TYPE_BOX:
- case EDJE_PART_TYPE_TABLE:
- case EDJE_PART_TYPE_SWALLOW:
- _part_namespace_verify(pc, ep, ef, 1);
- break;
- case EDJE_PART_TYPE_TEXT:
- case EDJE_PART_TYPE_TEXTBLOCK:
- case EDJE_PART_TYPE_SPACER:
- _part_namespace_verify(pc, ep, ef, 0);
- break;
- default: break;
+ switch (ep->type)
+ {
+ case EDJE_PART_TYPE_BOX:
+ case EDJE_PART_TYPE_TABLE:
+ case EDJE_PART_TYPE_SWALLOW:
+ _part_namespace_verify(pc, ep, ef, 1);
+ break;
+ case EDJE_PART_TYPE_TEXT:
+ case EDJE_PART_TYPE_TEXTBLOCK:
+ case EDJE_PART_TYPE_SPACER:
+ _part_namespace_verify(pc, ep, ef, 0);
+ break;
+ default: break;
+ }
}
/* FIXME: When smart masks are supported, remove this check */
@@ -716,6 +720,7 @@ _program_signal_namespace_verify(Edje_Part_Collection *pc, Eet_File *ef EINA_UNU
static void
check_program(Edje_Part_Collection *pc, Edje_Program *ep, Eet_File *ef)
{
+ Edje_Part_Collection_Parser *pcp = (Edje_Part_Collection_Parser*)pc;
switch (ep->action)
{
case EDJE_ACTION_TYPE_STATE_SET:
@@ -744,7 +749,8 @@ check_program(Edje_Part_Collection *pc, Edje_Program *ep, Eet_File *ef)
if ((!ep->targets) && (ep->action == EDJE_ACTION_TYPE_SIGNAL_EMIT))
{
- _program_signal_namespace_verify(pc, ef, ep->state, ep->state2);
+ if (!pcp->skip_namespace_validation)
+ _program_signal_namespace_verify(pc, ef, ep->state, ep->state2);
}
EINA_LIST_FOREACH(ep->targets, l, et)
diff --git a/src/bin/edje/edje_cc_parse.c b/src/bin/edje/edje_cc_parse.c
index 068bd74eee..7a3335c559 100644
--- a/src/bin/edje/edje_cc_parse.c
+++ b/src/bin/edje/edje_cc_parse.c
@@ -22,6 +22,8 @@
# define EPP_EXT
#endif
+#define SKIP_NAMESPACE_VALIDATION_SUPPORTED " -DSKIP_NAMESPACE_VALIDATION=1 "
+
#define EDJE_1_18_SUPPORTED " -DEFL_VERSION_1_18=1 "
#define EDJE_1_19_SUPPORTED " -DEFL_VERSION_1_19=1 "
#define EDJE_1_20_SUPPORTED " -DEFL_VERSION_1_20=1 "
@@ -1082,7 +1084,7 @@ compile(void)
inc = ecore_file_dir_get(file_in);
if (depfile)
- snprintf(buf, sizeof(buf), "\"%s\" -MMD \"%s\" -MT \"%s\" \"%s\""
+ snprintf(buf, sizeof(buf), "\"%s\" "SKIP_NAMESPACE_VALIDATION_SUPPORTED" -MMD \"%s\" -MT \"%s\" \"%s\""
" -I\"%s\" %s -o \"%s\""
" -DEFL_VERSION_MAJOR=%d -DEFL_VERSION_MINOR=%d"
EDJE_CC_EFL_VERSION_SUPPORTED,
@@ -1090,7 +1092,7 @@ compile(void)
inc ? inc : "./", def, clean_file,
EINA_VERSION_MAJOR, EINA_VERSION_MINOR);
else if (annotate)
- snprintf(buf, sizeof(buf), "\"%s\" -annotate -a \"%s\" \"%s\""
+ snprintf(buf, sizeof(buf), "\"%s\" "SKIP_NAMESPACE_VALIDATION_SUPPORTED" -annotate -a \"%s\" \"%s\""
" -I\"%s\" %s -o \"%s\""
" -DEFL_VERSION_MAJOR=%d -DEFL_VERSION_MINOR=%d"
EDJE_CC_EFL_VERSION_SUPPORTED,
@@ -1098,7 +1100,7 @@ compile(void)
inc ? inc : "./", def, clean_file,
EINA_VERSION_MAJOR, EINA_VERSION_MINOR);
else
- snprintf(buf, sizeof(buf), "\"%s\" -a \"%s\" \"%s\" -I\"%s\" %s"
+ snprintf(buf, sizeof(buf), "\"%s\" "SKIP_NAMESPACE_VALIDATION_SUPPORTED" -a \"%s\" \"%s\" -I\"%s\" %s"
" -o \"%s\""
" -DEFL_VERSION_MAJOR=%d -DEFL_VERSION_MINOR=%d"
EDJE_CC_EFL_VERSION_SUPPORTED,