forked from enlightenment/efl
eolian: add support for marking and checking parts as beta
Fixes T7837.
This commit is contained in:
parent
1f7cb3e7c8
commit
653fddfc1e
|
@ -400,8 +400,8 @@ abstract Efl.Ui.Widget extends Efl.Canvas.Group implements Efl.Access.Object,
|
|||
}
|
||||
}
|
||||
parts {
|
||||
shadow: Efl.Ui.Widget_Part_Shadow;
|
||||
background: Efl.Ui.Widget_Part_Bg;
|
||||
shadow @beta: Efl.Ui.Widget_Part_Shadow;
|
||||
background @beta: Efl.Ui.Widget_Part_Bg;
|
||||
}
|
||||
implements {
|
||||
class.constructor;
|
||||
|
|
|
@ -2217,6 +2217,19 @@ EAPI const Eolian_Class *eolian_part_class_get(const Eolian_Part *part);
|
|||
*/
|
||||
EAPI const Eolian_Documentation *eolian_part_documentation_get(const Eolian_Part *part);
|
||||
|
||||
/*
|
||||
* @brief Get whether a part is beta.
|
||||
*
|
||||
* @see eolian_object_is_beta
|
||||
*
|
||||
* @ingroup Eolian
|
||||
*/
|
||||
static inline Eina_Bool
|
||||
eolian_part_is_beta(const Eolian_Part *part)
|
||||
{
|
||||
return eolian_object_is_beta(EOLIAN_OBJECT(part));
|
||||
}
|
||||
|
||||
/*
|
||||
* @brief Get an event in a class by its name
|
||||
*
|
||||
|
|
|
@ -480,8 +480,10 @@ _validate_part(Validate_State *vals, Eolian_Part *part, Eina_Hash *nhash)
|
|||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
Eina_Bool was_stable = _set_stable(vals, !part->base.is_beta && vals->stable);
|
||||
|
||||
if (!_validate_doc(part->doc))
|
||||
return EINA_FALSE;
|
||||
return _reset_stable(vals, was_stable, EINA_FALSE);
|
||||
|
||||
/* switch the class name for class */
|
||||
Eolian_Class *pcl = eina_hash_find(part->base.unit->classes, part->klass_name);
|
||||
|
@ -489,7 +491,13 @@ _validate_part(Validate_State *vals, Eolian_Part *part, Eina_Hash *nhash)
|
|||
{
|
||||
_eo_parser_log(&part->base, "unknown part class '%s' (incorrect case?)",
|
||||
part->klass_name);
|
||||
return EINA_FALSE;
|
||||
return _reset_stable(vals, was_stable, EINA_FALSE);
|
||||
}
|
||||
else if (vals->stable && pcl->base.is_beta)
|
||||
{
|
||||
_eo_parser_log(&part->base, "beta part class '%s' used in stable context",
|
||||
pcl->base.name);
|
||||
return _reset_stable(vals, was_stable, EINA_FALSE);
|
||||
}
|
||||
eina_stringshare_del(part->klass_name);
|
||||
part->klass = pcl;
|
||||
|
@ -497,6 +505,7 @@ _validate_part(Validate_State *vals, Eolian_Part *part, Eina_Hash *nhash)
|
|||
if (!oobj)
|
||||
eina_hash_add(nhash, &part->base.name, &part->base);
|
||||
|
||||
_reset_stable(vals, was_stable, EINA_TRUE);
|
||||
return _validate(&part->base);
|
||||
}
|
||||
|
||||
|
|
|
@ -1406,6 +1406,11 @@ parse_part(Eo_Lexer *ls)
|
|||
check(ls, TOK_VALUE);
|
||||
part->base.name = eina_stringshare_ref(ls->t.value.s);
|
||||
eo_lexer_get(ls);
|
||||
if (ls->t.kw == KW_at_beta)
|
||||
{
|
||||
part->base.is_beta = EINA_TRUE;
|
||||
eo_lexer_get(ls);
|
||||
}
|
||||
check_next(ls, ':');
|
||||
Eina_Strbuf *buf = eina_strbuf_new();
|
||||
eo_lexer_dtor_push(ls, EINA_FREE_CB(eina_strbuf_free), buf);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
class Parts extends Override {
|
||||
parts {
|
||||
part1: Override; [[Part 1]]
|
||||
part2: Parts; [[Part 2]]
|
||||
part2 @beta: Parts; [[Part 2]]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1529,6 +1529,9 @@ EFL_START_TEST(eolian_parts)
|
|||
|
||||
fail_if(!(klass = eolian_part_class_get(part)));
|
||||
ck_assert_str_eq(part_classes[i], eolian_class_short_name_get(klass));
|
||||
|
||||
fail_if(eolian_part_is_beta(part) && (i == 0));
|
||||
|
||||
i++;
|
||||
}
|
||||
eina_iterator_free(iter);
|
||||
|
|
Loading…
Reference in New Issue