forked from enlightenment/efl
Efl Canvas Text : canvas textblock changed not fired for shadow format (style_apply)
Summary: If shadow format changed using style_apply , the event EFL_CANVAS_TEXTBLOCK_EVENT_CHANGED will not be fired. also added tests for it. Reviewers: ali.alzyod, woohyun Reviewed By: ali.alzyod Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11078
This commit is contained in:
parent
4ad272a8c3
commit
eb0f7183dd
|
@ -1489,11 +1489,15 @@ _style_string_split(const char *str, char* part1, char* part2)
|
|||
*temp = 0;
|
||||
}
|
||||
|
||||
#define FORMAT_SHADOW_SET(evas, efl) {fmt->style = evas; if (set_default) _FMT_INFO(effect) = efl;}
|
||||
#define FORMAT_SHADOW_SET(evas, efl) { \
|
||||
if (fmt->style != evas) { fmt->style = evas; changed = EINA_TRUE; } \
|
||||
if (set_default && (_FMT_INFO(effect) != efl)) {_FMT_INFO(effect) = efl; changed = EINA_TRUE;}}
|
||||
|
||||
void
|
||||
Eina_Bool
|
||||
_format_shadow_set(Evas_Object_Textblock_Format *fmt, char *str, Eina_Bool set_default, Efl_Canvas_Textblock_Data *o)
|
||||
{
|
||||
Eina_Bool changed = EINA_FALSE;
|
||||
|
||||
if (!strcmp(str, "shadow"))
|
||||
FORMAT_SHADOW_SET(EVAS_TEXT_STYLE_SHADOW, EFL_TEXT_STYLE_EFFECT_TYPE_SHADOW)
|
||||
else if (!strcmp(str, "outline"))
|
||||
|
@ -1514,13 +1518,22 @@ _format_shadow_set(Evas_Object_Textblock_Format *fmt, char *str, Eina_Bool set_d
|
|||
FORMAT_SHADOW_SET(EVAS_TEXT_STYLE_FAR_SOFT_SHADOW, EFL_TEXT_STYLE_EFFECT_TYPE_FAR_SOFT_SHADOW)
|
||||
else /*off none plain */
|
||||
FORMAT_SHADOW_SET(EVAS_TEXT_STYLE_PLAIN, EFL_TEXT_STYLE_EFFECT_TYPE_NONE)
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
||||
#define FORMAT_SHADOW_DIRECTION_SET(direction) {EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET(fmt->style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_##direction); if (set_default) _FMT_INFO(shadow_direction) = EFL_TEXT_STYLE_SHADOW_DIRECTION_##direction;}
|
||||
#define FORMAT_SHADOW_DIRECTION_SET(direction) { \
|
||||
unsigned char temp = fmt->style; \
|
||||
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET(fmt->style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_##direction); \
|
||||
changed = (fmt->style != temp); \
|
||||
if (set_default && (_FMT_INFO(shadow_direction) != EFL_TEXT_STYLE_SHADOW_DIRECTION_##direction)) \
|
||||
{_FMT_INFO(shadow_direction) = EFL_TEXT_STYLE_SHADOW_DIRECTION_##direction; changed = EINA_TRUE;}}
|
||||
|
||||
void
|
||||
Eina_Bool
|
||||
_format_shadow_direction_set(Evas_Object_Textblock_Format *fmt, char *str, Eina_Bool set_default, Efl_Canvas_Textblock_Data *o)
|
||||
{
|
||||
Eina_Bool changed = EINA_FALSE;
|
||||
|
||||
if (!strcmp(str, "bottom_right"))
|
||||
FORMAT_SHADOW_DIRECTION_SET(BOTTOM_RIGHT)
|
||||
else if (!strcmp(str, "bottom"))
|
||||
|
@ -1539,6 +1552,8 @@ _format_shadow_direction_set(Evas_Object_Textblock_Format *fmt, char *str, Eina_
|
|||
FORMAT_SHADOW_DIRECTION_SET(RIGHT)
|
||||
else
|
||||
FORMAT_SHADOW_DIRECTION_SET(BOTTOM_RIGHT)
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3169,10 +3184,10 @@ _default_format_command(Evas_Object *eo_obj, Evas_Object_Textblock_Format *fmt,
|
|||
*part2 = 0;
|
||||
|
||||
_style_string_split(param, part1, part2);
|
||||
_format_shadow_set(fmt, part1, EINA_TRUE, o);
|
||||
changed = _format_shadow_set(fmt, part1, EINA_TRUE, o);
|
||||
|
||||
if (*part2)
|
||||
_format_shadow_direction_set(fmt, part2, EINA_TRUE, o);
|
||||
changed = _format_shadow_direction_set(fmt, part2, EINA_TRUE, o) || changed;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -5012,12 +5012,17 @@ EFL_START_TEST(efl_canvas_textblock_style)
|
|||
const char *style;
|
||||
Eina_Size2D size1, size2;
|
||||
|
||||
int changed_emit = 0;
|
||||
efl_event_callback_add(txt, EFL_CANVAS_TEXTBLOCK_EVENT_CHANGED, _increment_int_changed, &changed_emit);
|
||||
|
||||
efl_text_password_set(txt, EINA_FALSE);
|
||||
efl_text_underline_type_set(txt, EFL_TEXT_STYLE_UNDERLINE_TYPE_DOUBLE);
|
||||
efl_text_font_weight_set(txt, EFL_TEXT_FONT_WEIGHT_EXTRABOLD);
|
||||
efl_text_font_slant_set(txt, EFL_TEXT_FONT_SLANT_OBLIQUE);
|
||||
efl_text_tab_stops_set(txt, 20);
|
||||
|
||||
ck_assert_int_eq(changed_emit, 4);
|
||||
|
||||
efl_canvas_textblock_style_apply(txt, "color=#90E135");
|
||||
|
||||
style = efl_canvas_textblock_all_styles_get(txt);
|
||||
|
@ -5037,6 +5042,7 @@ EFL_START_TEST(efl_canvas_textblock_style)
|
|||
style = efl_canvas_textblock_all_styles_get(txt);
|
||||
fail_if(!strstr(style, "password=on"));
|
||||
|
||||
changed_emit = 0;
|
||||
efl_canvas_textblock_style_apply(txt, "font_width=ultracondensed");
|
||||
ck_assert_int_eq(efl_text_font_width_get(txt), EFL_TEXT_FONT_WIDTH_ULTRACONDENSED);
|
||||
|
||||
|
@ -5081,6 +5087,13 @@ EFL_START_TEST(efl_canvas_textblock_style)
|
|||
ck_assert_int_eq(b, 0x6C);
|
||||
ck_assert_int_eq(a, 0xFF);
|
||||
|
||||
ck_assert_int_eq(changed_emit, 12);
|
||||
|
||||
//check if multiple attribute set, called only once
|
||||
changed_emit = 0;
|
||||
efl_canvas_textblock_style_apply(txt, style);
|
||||
ck_assert_int_eq(changed_emit, 1);
|
||||
|
||||
// Style Apply taking
|
||||
efl_text_set(txt,"A");
|
||||
efl_canvas_textblock_style_apply(txt,"font_size=2");
|
||||
|
|
Loading…
Reference in New Issue