elm_label: Fixed to prevent slide's autostart before calling elm_label_slide_go()
authorJee-Yong Um <jc9.um@samsung.com>
Wed, 4 Feb 2015 10:26:06 +0000 (19:26 +0900)
committerDaniel Juyung Seo <seojuyung2@gmail.com>
Wed, 4 Feb 2015 10:26:06 +0000 (19:26 +0900)
Summary:
Label should not start sliding before elm_label_slide_go() is called.
However, label starts sliding automatically,
because resize callback emits slide start signal.
This patch prevents label from sliding before calling elm_label_slide_go().

@fix

Reviewers: woohyun, Hermet, seoz

Subscribers: CHAN, woohyun

Differential Revision: https://phab.enlightenment.org/D1906

src/lib/elm_label.c
src/lib/elm_widget_label.h

index 913f1cc..34e8fa6 100644 (file)
@@ -86,6 +86,8 @@ _label_slide_change(Evas_Object *obj)
    ELM_LABEL_DATA_GET(obj, sd);
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
 
+   if (!sd->slide_state) return;
+
    edje_object_signal_emit(wd->resize_obj, "elm,state,slide,stop", "elm");
 
    //doesn't support multiline slide effect
@@ -578,8 +580,10 @@ _elm_label_slide_speed_get(Eo *obj EINA_UNUSED, Elm_Label_Data *sd)
 }
 
 EOLIAN static void
-_elm_label_slide_go(Eo *obj, Elm_Label_Data *_pd EINA_UNUSED)
+_elm_label_slide_go(Eo *obj, Elm_Label_Data *sd)
 {
+   if (!sd->slide_state) sd->slide_state = EINA_TRUE;
+
    _label_slide_change(obj);
    elm_layout_sizing_eval(obj);
 }
index 5e9532f..e2a02d2 100644 (file)
@@ -28,6 +28,7 @@ struct _Elm_Label_Data
    Eina_Bool             ellipsis : 1;
    Eina_Bool             slide_ellipsis : 1;
    Eina_Bool             use_slide_speed : 1;
+   Eina_Bool             slide_state : 1; /**< This will be marked as EINA_TRUE after elm_label_slide_go() is called. */
 };
 
 #define ELM_LABEL_DATA_GET(o, sd) \