raster pushed a commit to branch master.

commit 6756c08c03b8435d02186fe6e88bd6dfde12e669
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Thu Jul 18 22:19:44 2013 +0900

    work on slider issues like not showing units brought up by player test
---
 src/lib/elc_player.c        |  3 +--
 src/lib/elm_slider.c        | 59 ++++++++++++++++++++++++++++-----------------
 src/lib/elm_widget_slider.h |  1 +
 3 files changed, 39 insertions(+), 24 deletions(-)

diff --git a/src/lib/elc_player.c b/src/lib/elc_player.c
index 10f4ff0..5b60a4d 100644
--- a/src/lib/elc_player.c
+++ b/src/lib/elc_player.c
@@ -122,7 +122,6 @@ _elm_player_smart_event(Eo *obj, void *_pd, va_list *list)
         if (ret) *ret = EINA_TRUE;
         return;
      }
-   fprintf(stderr, "keyname: '%s' not handle\n", ev->keyname);
 }
 
 
@@ -444,7 +443,6 @@ _double_to_time(double value)
    else
      snprintf(buf, sizeof(buf), "%02i.%02i",
               ps, pf);
-
    return (char *)eina_stringshare_add(buf);
 }
 
@@ -554,6 +552,7 @@ _elm_player_smart_add(Eo *obj, void *_pd, va_list *list 
EINA_UNUSED)
    priv->stop = _player_button_add(obj, "media_player/stop", _stop);
 
    priv->slider = elm_slider_add(obj);
+   elm_slider_indicator_show_set(priv->slider, EINA_TRUE);
    elm_slider_indicator_format_function_set
      (priv->slider, _double_to_time, _str_free);
    elm_slider_units_format_function_set
diff --git a/src/lib/elm_slider.c b/src/lib/elm_slider.c
index 0d4d9a4..733499e 100644
--- a/src/lib/elm_slider.c
+++ b/src/lib/elm_slider.c
@@ -42,6 +42,8 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
    {NULL, NULL}
 };
 
+static void _min_max_set(Evas_Object *obj);
+
 static Eina_Bool
 _delay_change(void *data)
 {
@@ -120,7 +122,23 @@ _units_set(Evas_Object *obj)
         char *buf;
 
         buf = sd->units_format_func(sd->val);
-        elm_layout_text_set(obj, "elm.units", buf);
+        if (buf)
+          {
+             elm_layout_text_set(obj, "elm.units", buf);
+             if (!sd->units_show)
+               {
+                  elm_layout_signal_emit(obj, "elm,state,units,visible", 
"elm");
+                  sd->units_show = EINA_TRUE;
+               }
+          }
+        else
+          {
+             if (sd->units_show)
+               {
+                  elm_layout_signal_emit(obj, "elm,state,units,hidden", "elm");
+                  sd->units_show = EINA_FALSE;
+               }
+          }
 
         if (sd->units_format_free) sd->units_format_free(buf);
      }
@@ -130,8 +148,21 @@ _units_set(Evas_Object *obj)
 
         snprintf(buf, sizeof(buf), sd->units, sd->val);
         elm_layout_text_set(obj, "elm.units", buf);
+        if (!sd->units_show)
+          {
+             elm_layout_signal_emit(obj, "elm,state,units,visible", "elm");
+             sd->units_show = EINA_TRUE;
+          }
+     }
+   else
+     {
+        elm_layout_text_set(obj, "elm.units", NULL);
+        if (sd->units_show)
+          {
+             elm_layout_signal_emit(obj, "elm,state,units,hidden", "elm");
+             sd->units_show = EINA_FALSE;
+          }
      }
-   else elm_layout_text_set(obj, "elm.units", NULL);
 }
 
 static void
@@ -463,9 +494,6 @@ _elm_slider_smart_theme(Eo *obj, void *_pd, va_list *list)
      edje_object_scale_set(sd->popup, elm_widget_scale_get(obj) *
                            elm_config_scale_get());
 
-   if (sd->units)
-     elm_layout_signal_emit(obj, "elm,state,units,visible", "elm");
-
    if (sd->horizontal)
      evas_object_size_hint_min_set
        (sd->spacer, (double)sd->size * elm_widget_scale_get(obj) *
@@ -487,6 +515,9 @@ _elm_slider_smart_theme(Eo *obj, void *_pd, va_list *list)
         if (sd->popup)
           edje_object_signal_emit(sd->popup, "elm,state,val,show", "elm");
      }
+   _min_max_set(obj);
+   _units_set(obj);
+   _indicator_set(obj);
    _visuals_refresh(obj);
 
    edje_object_message_signal_process(wd->resize_obj);
@@ -716,8 +747,8 @@ _elm_slider_smart_calculate(Eo *obj, void *_pd, va_list 
*list EINA_UNUSED)
        elm_config_scale_get());
 
    _val_fetch(obj);
-   _units_set(obj);
    _min_max_set(obj);
+   _units_set(obj);
    _indicator_set(obj);
 
    elm_layout_thaw(obj);
@@ -944,24 +975,8 @@ _elm_slider_unit_format_set(Eo *obj, void *_pd, va_list 
*list)
 {
    const char *units = va_arg(*list, const char *);
    Elm_Slider_Smart_Data *sd = _pd;
-   Elm_Widget_Smart_Data *wd = eo_data_scope_get(obj, ELM_OBJ_WIDGET_CLASS);
 
    eina_stringshare_replace(&sd->units, units);
-   if (units)
-     {
-        elm_layout_signal_emit(obj, "elm,state,units,visible", "elm");
-        edje_object_message_signal_process(wd->resize_obj);
-        if (sd->popup)
-          edje_object_signal_emit(sd->popup, "elm,state,units,visible", "elm");
-     }
-   else
-     {
-        elm_layout_signal_emit(obj, "elm,state,units,hidden", "elm");
-        edje_object_message_signal_process(wd->resize_obj);
-        if (sd->popup)
-          edje_object_signal_emit(sd->popup, "elm,state,units,hidden", "elm");
-     }
-
    evas_object_smart_changed(obj);
 }
 
diff --git a/src/lib/elm_widget_slider.h b/src/lib/elm_widget_slider.h
index 809a9ec..c8ff66c 100644
--- a/src/lib/elm_widget_slider.h
+++ b/src/lib/elm_widget_slider.h
@@ -42,6 +42,7 @@ struct _Elm_Slider_Smart_Data
    Eina_Bool             spacer_down : 1;
    Eina_Bool             frozen : 1;
    Eina_Bool             popup_hiding : 1;
+   Eina_Bool             units_show : 1;
 };
 
 /**

-- 

------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk

Reply via email to