cedric pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=223c97afe1005f7a373d86db918e2303f653a1f5

commit 223c97afe1005f7a373d86db918e2303f653a1f5
Author: woochan lee <wc0917....@samsung.com>
Date:   Tue Jul 28 23:34:40 2015 +0200

    multibuttonentry: internal label object status, box pack, unpack logic 
clean up.
    
    Summary:
    Even user sets empty string here for text, label still packed in box with 
min size(finger size).
    label_set internal logic is not clear before.
    ex: object min set, resize check the string length then sending signal, min 
set again.
    so i deleted the signal emit code here, we can handle label show, hide 
status in code and it's more clear.
    Besides "sd->label" is always true all of the case. we need to check 
whether it's packed or not.
    
    The label will be added to parent's sub object when it's packed into box.
    label_set as empty string in adding time also meaningless.
    
    @fix
    
    Test Plan:
    Run multibuttonentry sample.
    Set a text somthing for it then set an empty string here.
    
    Reviewers: Hermet, woohyun
    
    Differential Revision: https://phab.enlightenment.org/D2841
    
    Signed-off-by: Cedric BAIL <ced...@osg.samsung.com>
---
 data/themes/edc/elm/multibuttonentry.edc | 19 -------------------
 src/lib/elc_multibuttonentry.c           | 21 ++++++++-------------
 src/lib/elm_widget_multibuttonentry.h    |  1 +
 3 files changed, 9 insertions(+), 32 deletions(-)

diff --git a/data/themes/edc/elm/multibuttonentry.edc 
b/data/themes/edc/elm/multibuttonentry.edc
index cd0bb5d..7c3f199 100644
--- a/data/themes/edc/elm/multibuttonentry.edc
+++ b/data/themes/edc/elm/multibuttonentry.edc
@@ -25,25 +25,6 @@ group { name: "elm/multibuttonentry/label/default";
             rel1.offset: 2 2;
             rel2.offset: -5 -5;
          }
-         description { state: "no_text" 0.0;
-            inherit: "default" 0.0;
-            text.min: 0 1;
-            rel1.offset: 0 0;
-            rel2.offset: -1 -1;
-            visible: 0;
-         }
-      }
-   }
-   programs {
-      program {
-         signal: "elm,mbe,set_text"; source: "elm";
-         action: STATE_SET "default" 0.0;
-         target: "elm.text";
-      }
-      program {
-         signal: "elm,mbe,clear_text"; source: "elm";
-         action: STATE_SET "no_text" 0.0;
-         target: "elm.text";
       }
    }
 }
diff --git a/src/lib/elc_multibuttonentry.c b/src/lib/elc_multibuttonentry.c
index 0385fbf..8255e35 100644
--- a/src/lib/elc_multibuttonentry.c
+++ b/src/lib/elc_multibuttonentry.c
@@ -176,7 +176,7 @@ _shrink_mode_set(Evas_Object *obj,
         // pack buttons only 1line
         w = sd->w_box;
 
-        if (sd->label)
+        if (sd->label && sd->label_packed)
           {
              elm_box_pack_end(sd->box, sd->label);
              evas_object_size_hint_min_get(sd->label, &w_tmp, NULL);
@@ -260,7 +260,7 @@ _shrink_mode_set(Evas_Object *obj,
 
         // pack buttons only 1line
 
-        if (sd->label) elm_box_pack_end(sd->box, sd->label);
+        if (sd->label && sd->label_packed) elm_box_pack_end(sd->box, 
sd->label);
 
         // pack remain btns
         eo_item = NULL;
@@ -782,7 +782,7 @@ _item_new(Elm_Multibuttonentry_Data *sd,
           }
         else
           {
-             if (sd->label)
+             if (sd->label && sd->label_packed)
                elm_box_pack_after(sd->box, VIEW(item), sd->label);
              else
                elm_box_pack_start(sd->box, VIEW(item));
@@ -1156,26 +1156,23 @@ _label_set(Evas_Object *obj,
 
    eina_stringshare_replace(&sd->label_str, str);
 
-   evas_object_size_hint_min_set(sd->label, 0, 0);
-   evas_object_resize(sd->label, 0, 0);
    edje_object_part_text_escaped_set(sd->label, "elm.text", str);
 
    if (!strlen(str))
      {
-        edje_object_signal_emit(sd->label, "elm,mbe,clear_text", "elm");
-        edje_object_size_min_calc(sd->label, &width, &height);
+        sd->label_packed = EINA_FALSE;
         elm_box_unpack(sd->box, sd->label);
+        evas_object_hide(sd->label);
      }
    else
      {
-        edje_object_signal_emit(sd->label, "elm,mbe,set_text", "elm");
+        sd->label_packed = EINA_TRUE;
         edje_object_size_min_calc(sd->label, &width, &height);
+        evas_object_size_hint_min_set(sd->label, width, height);
         elm_box_pack_start(sd->box, sd->label);
+        evas_object_show(sd->label);
      }
 
-   elm_coords_finger_size_adjust(1, &width, 1, &height);
-   evas_object_size_hint_min_set(sd->label, width, height);
-   evas_object_show(sd->label);
    _view_update(sd);
 }
 
@@ -1375,8 +1372,6 @@ _view_init(Evas_Object *obj, Elm_Multibuttonentry_Data 
*sd)
    elm_widget_theme_object_set
      (obj, sd->label, "multibuttonentry", "label",
      elm_widget_style_get(obj));
-   _label_set(obj, "");
-   elm_widget_sub_object_add(obj, sd->label);
 
    // ACCESS
    if (_elm_config->access_mode == ELM_ACCESS_MODE_ON)
diff --git a/src/lib/elm_widget_multibuttonentry.h 
b/src/lib/elm_widget_multibuttonentry.h
index 607e05c..87323ea 100644
--- a/src/lib/elm_widget_multibuttonentry.h
+++ b/src/lib/elm_widget_multibuttonentry.h
@@ -105,6 +105,7 @@ struct _Elm_Multibuttonentry_Data
    Eina_Bool                           last_it_select : 1;
    Eina_Bool                           editable : 1;
    Eina_Bool                           focused : 1;
+   Eina_Bool                           label_packed : 1;
 
    Ecore_Timer                         *longpress_timer;
 };

-- 


Reply via email to