elementary/label - removed workaround. now it's working slide reset every go is called.

SVN revision: 82259
This commit is contained in:
ChunEon Park 2013-01-05 04:10:33 +00:00
parent f33321a0ca
commit 2e70ef8124
1 changed files with 10 additions and 16 deletions

View File

@ -69,7 +69,9 @@ _label_slide_change(Evas_Object *obj)
ELM_LABEL_DATA_GET(obj, sd); ELM_LABEL_DATA_GET(obj, sd);
Elm_Widget_Smart_Data *wd = eo_data_get(obj, ELM_OBJ_WIDGET_CLASS); Elm_Widget_Smart_Data *wd = eo_data_get(obj, ELM_OBJ_WIDGET_CLASS);
// doesn't support multiline slide effect edje_object_signal_emit(wd->resize_obj, "elm,state,slide,stop", "elm");
//doesn't support multiline slide effect
if (sd->linewrap) if (sd->linewrap)
{ {
sd->slide_mode = ELM_LABEL_SLIDE_MODE_NONE; sd->slide_mode = ELM_LABEL_SLIDE_MODE_NONE;
@ -77,21 +79,21 @@ _label_slide_change(Evas_Object *obj)
return; return;
} }
//stop if the text is none.
plaintxt = _elm_util_mkup_to_text plaintxt = _elm_util_mkup_to_text
(edje_object_part_text_get (edje_object_part_text_get(wd->resize_obj, "elm.text"));
(wd->resize_obj, "elm.text")); if (plaintxt)
if (plaintxt != NULL)
{ {
plainlen = strlen(plaintxt); plainlen = strlen(plaintxt);
free(plaintxt); free(plaintxt);
} }
// too short to slide label
if (plainlen < 1) if (plainlen < 1)
{ {
sd->slide_mode = ELM_LABEL_SLIDE_MODE_NONE; sd->slide_mode = ELM_LABEL_SLIDE_MODE_NONE;
return; return;
} }
//has slide effect.
if (sd->slide_mode != ELM_LABEL_SLIDE_MODE_NONE) if (sd->slide_mode != ELM_LABEL_SLIDE_MODE_NONE)
{ {
//slide only if the slide area is smaller than text width size. //slide only if the slide area is smaller than text width size.
@ -126,14 +128,12 @@ _label_slide_change(Evas_Object *obj)
msg->val[0] = sd->slide_duration; msg->val[0] = sd->slide_duration;
edje_object_message_send edje_object_message_send
(wd->resize_obj, EDJE_MESSAGE_FLOAT_SET, 0, msg); (wd->resize_obj, EDJE_MESSAGE_FLOAT_SET, 0, msg);
edje_object_signal_emit edje_object_signal_emit(wd->resize_obj, "elm,state,slide,start", "elm");
(wd->resize_obj, "elm,state,slide,start", "elm");
} }
//no slide effect.
else else
{ {
edje_object_signal_emit
(wd->resize_obj, "elm,state,slide,stop", "elm");
if (sd->slide_ellipsis) if (sd->slide_ellipsis)
{ {
sd->slide_ellipsis = EINA_FALSE; sd->slide_ellipsis = EINA_FALSE;
@ -667,12 +667,6 @@ elm_label_slide_go(Evas_Object *obj)
static void static void
_slide_go(Eo *obj, void *_pd __UNUSED__, va_list *list __UNUSED__) _slide_go(Eo *obj, void *_pd __UNUSED__, va_list *list __UNUSED__)
{ {
Elm_Label_Smart_Data *sd = _pd;
//FIXME: work around code. somthing need to be reset effect here.
Elm_Label_Slide_Mode mode = sd->slide_mode;
sd->slide_mode = ELM_LABEL_SLIDE_MODE_NONE;
_label_slide_change(obj);
sd->slide_mode = mode;
_label_slide_change(obj); _label_slide_change(obj);
elm_layout_sizing_eval(obj); elm_layout_sizing_eval(obj);
} }