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