label: Update label calc logic according to edje textblock update
authorYoungbok Shin <youngb.shin@samsung.com>
Thu, 17 Nov 2016 09:08:54 +0000 (18:08 +0900)
committerTaehyub Kim <taehyub.kim@samsung.com>
Tue, 29 Nov 2016 12:32:36 +0000 (21:32 +0900)
@tizen_fix

Change-Id: I483768e805f78e9f7da62d9d6d9fc06142779d71

src/lib/elm_label.c

index f1bebb1dce6d61bb959d74d6a93698c93e692899..26c7a2793e1ea3a2d18cb8cc89f18a97051c87aa 100644 (file)
@@ -183,6 +183,20 @@ _label_slide_change(Evas_Object *obj)
      }
 }
 
+/* TIZEN_ONLY(20161117): Update label calc logic according to edje textblock update */
+static void
+_elm_label_horizontal_size_policy_update(Eo *obj, Elm_Label_Data *sd)
+{
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
+
+   if (!sd->ellipsis && (sd->linewrap == ELM_WRAP_NONE))
+     edje_object_signal_emit(wd->resize_obj, "elm,state,horizontal,expandable", "elm");
+   else
+     edje_object_signal_emit(wd->resize_obj, "elm,state,horizontal,fixed", "elm");
+   edje_object_message_signal_process(wd->resize_obj);
+}
+/* END */
+
 EOLIAN static Elm_Theme_Apply
 _elm_label_elm_widget_theme_apply(Eo *obj, Elm_Label_Data *sd)
 {
@@ -195,6 +209,10 @@ _elm_label_elm_widget_theme_apply(Eo *obj, Elm_Label_Data *sd)
    eo_do_super(obj, MY_CLASS, int_ret = elm_obj_widget_theme_apply());
    if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
+   /* TIZEN_ONLY(20161117): Update label calc logic according to edje textblock update */
+   _elm_label_horizontal_size_policy_update(obj, sd);
+   /* END */
+
    _label_format_set(wd->resize_obj, sd->format);
    _label_slide_change(obj);
 
@@ -463,6 +481,13 @@ _elm_label_line_wrap_set(Eo *obj, Elm_Label_Data *sd, Elm_Wrap_Type wrap)
    if (sd->linewrap == wrap) return;
 
    sd->linewrap = wrap;
+
+   /* TIZEN_ONLY(20161117): Update label calc logic according to edje textblock update */
+   sd->lastw = -1;
+
+   _elm_label_horizontal_size_policy_update(obj, sd);
+   /* END */
+
    text = elm_layout_text_get(obj, NULL);
    if (!text) return;
 
@@ -537,6 +562,12 @@ _elm_label_ellipsis_set(Eo *obj, Elm_Label_Data *sd, Eina_Bool ellipsis)
    if (sd->ellipsis == ellipsis) return;
    sd->ellipsis = ellipsis;
 
+   /* TIZEN_ONLY(20161117): Update label calc logic according to edje textblock update */
+   sd->lastw = -1;
+
+   _elm_label_horizontal_size_policy_update(obj, sd);
+   /* END */
+
    text = elm_layout_text_get(obj, NULL);
    if (!text) return;