forked from enlightenment/efl
edje_cc now supports the group.inherit_only attribute
use this for flagging a group as a "virtual" group which is only used for inheriting @feature
This commit is contained in:
parent
7eb703fdde
commit
6b712f6f02
|
@ -144,6 +144,7 @@ struct _Edje_Part_Collection_Parser
|
||||||
{
|
{
|
||||||
Edje_Part_Collection common;
|
Edje_Part_Collection common;
|
||||||
Eina_Bool default_mouse_events;
|
Eina_Bool default_mouse_events;
|
||||||
|
Eina_Bool inherit_only;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* global fn calls */
|
/* global fn calls */
|
||||||
|
|
|
@ -144,7 +144,7 @@ static Edje_Part_Description_Common *current_desc = NULL;
|
||||||
static Edje_Part_Description_Common *parent_desc = NULL;
|
static Edje_Part_Description_Common *parent_desc = NULL;
|
||||||
static Edje_Program *current_program = NULL;
|
static Edje_Program *current_program = NULL;
|
||||||
static Eina_List *current_program_lookups = NULL;
|
static Eina_List *current_program_lookups = NULL;
|
||||||
static Eina_Bool current_group_inherit = EINA_FALSE;
|
Eina_Bool current_group_inherit = EINA_FALSE;
|
||||||
static Edje_Program *sequencing = NULL;
|
static Edje_Program *sequencing = NULL;
|
||||||
static Eina_List *sequencing_lookups = NULL;
|
static Eina_List *sequencing_lookups = NULL;
|
||||||
|
|
||||||
|
@ -198,6 +198,7 @@ static void ob_collections(void);
|
||||||
|
|
||||||
static void ob_collections_group(void);
|
static void ob_collections_group(void);
|
||||||
static void st_collections_group_name(void);
|
static void st_collections_group_name(void);
|
||||||
|
static void st_collections_group_inherit_only(void);
|
||||||
static void st_collections_group_inherit(void);
|
static void st_collections_group_inherit(void);
|
||||||
static void st_collections_group_part_remove(void);
|
static void st_collections_group_part_remove(void);
|
||||||
static void st_collections_group_program_remove(void);
|
static void st_collections_group_program_remove(void);
|
||||||
|
@ -513,6 +514,7 @@ New_Statement_Handler statement_handlers[] =
|
||||||
{"collections.group.vibrations.sample.source", st_collections_group_vibration_sample_source}, /* dup */
|
{"collections.group.vibrations.sample.source", st_collections_group_vibration_sample_source}, /* dup */
|
||||||
{"collections.group.name", st_collections_group_name},
|
{"collections.group.name", st_collections_group_name},
|
||||||
{"collections.group.inherit", st_collections_group_inherit},
|
{"collections.group.inherit", st_collections_group_inherit},
|
||||||
|
{"collections.group.inherit_only", st_collections_group_inherit_only},
|
||||||
{"collections.group.part_remove", st_collections_group_part_remove},
|
{"collections.group.part_remove", st_collections_group_part_remove},
|
||||||
{"collections.group.program_remove", st_collections_group_program_remove},
|
{"collections.group.program_remove", st_collections_group_program_remove},
|
||||||
{"collections.group.script_only", st_collections_group_script_only},
|
{"collections.group.script_only", st_collections_group_script_only},
|
||||||
|
@ -3029,6 +3031,31 @@ _part_copy(Edje_Part *ep, Edje_Part *ep2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@page edcref
|
||||||
|
@property
|
||||||
|
inherit_only
|
||||||
|
@parameters
|
||||||
|
1 or 0
|
||||||
|
@effect
|
||||||
|
This flags a group as being used only for inheriting, which
|
||||||
|
will inhibit edje_cc resolving of programs and parts that may
|
||||||
|
not exist in this group, but are located in the group which is inheriting
|
||||||
|
this group.
|
||||||
|
@endproperty
|
||||||
|
@since 1.10
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
st_collections_group_inherit_only(void)
|
||||||
|
{
|
||||||
|
Edje_Part_Collection_Parser *pcp;
|
||||||
|
|
||||||
|
check_arg_count(1);
|
||||||
|
|
||||||
|
pcp = eina_list_data_get(eina_list_last(edje_collections));
|
||||||
|
pcp->inherit_only = parse_bool(0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@page edcref
|
@page edcref
|
||||||
@property
|
@property
|
||||||
|
|
|
@ -2176,7 +2176,6 @@ data_queue_part_lookup(Edje_Part_Collection *pc, const char *name, int *dest)
|
||||||
Part_Lookup_Key key;
|
Part_Lookup_Key key;
|
||||||
Part_Lookup *pl = NULL;
|
Part_Lookup *pl = NULL;
|
||||||
Eina_List *list;
|
Eina_List *list;
|
||||||
|
|
||||||
key.pc = pc;
|
key.pc = pc;
|
||||||
key.mem.dest = dest;
|
key.mem.dest = dest;
|
||||||
key.stable = EINA_TRUE;
|
key.stable = EINA_TRUE;
|
||||||
|
@ -2221,7 +2220,6 @@ data_queue_part_reallocated_lookup(Edje_Part_Collection *pc, const char *name,
|
||||||
Part_Lookup_Key key;
|
Part_Lookup_Key key;
|
||||||
Part_Lookup *pl = NULL;
|
Part_Lookup *pl = NULL;
|
||||||
Eina_List *list;
|
Eina_List *list;
|
||||||
|
|
||||||
key.pc = pc;
|
key.pc = pc;
|
||||||
key.mem.reallocated.base = base;
|
key.mem.reallocated.base = base;
|
||||||
key.mem.reallocated.offset = offset;
|
key.mem.reallocated.offset = offset;
|
||||||
|
@ -2370,6 +2368,9 @@ void *
|
||||||
data_queue_program_lookup(Edje_Part_Collection *pc, const char *name, int *dest)
|
data_queue_program_lookup(Edje_Part_Collection *pc, const char *name, int *dest)
|
||||||
{
|
{
|
||||||
Program_Lookup *pl;
|
Program_Lookup *pl;
|
||||||
|
Edje_Part_Collection_Parser *pcp = (Edje_Part_Collection_Parser *)pc;
|
||||||
|
|
||||||
|
if (pcp->inherit_only && (!current_group_inherit)) return NULL;
|
||||||
|
|
||||||
if (!name) return NULL; /* FIXME: should we stop compiling ? */
|
if (!name) return NULL; /* FIXME: should we stop compiling ? */
|
||||||
|
|
||||||
|
@ -2691,7 +2692,7 @@ data_process_lookups(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == part->key.pc->parts_count)
|
if ((i == part->key.pc->parts_count) && (!((Edje_Part_Collection_Parser*)part->key.pc)->inherit_only))
|
||||||
{
|
{
|
||||||
ERR("Unable to find part name \"%s\" needed in group '%s'.",
|
ERR("Unable to find part name \"%s\" needed in group '%s'.",
|
||||||
alias, part->key.pc->part);
|
alias, part->key.pc->part);
|
||||||
|
|
Loading…
Reference in New Issue