fix bug where slider could be changed while disabled

ticket #2169


SVN revision: 82403
This commit is contained in:
Mike Blumenkrantz 2013-01-08 11:06:56 +00:00
parent 27624264ee
commit 9543eb5c37
6 changed files with 29 additions and 6 deletions

View File

@ -2,6 +2,8 @@
* Fixed bug where keyboard resizing of windows would not be possible if timeout was set to zero * Fixed bug where keyboard resizing of windows would not be possible if timeout was set to zero
* Fixed crash when clicking apply in wallpaper settings dialog and no wallpaper is selected * Fixed crash when clicking apply in wallpaper settings dialog and no wallpaper is selected
* Fixed bug where disabled slider widgets could be changed with mouse wheel
* Fixed bug where fileman config slider widgets were not properly disabled
* Added elm win trap callback for base size setting, calling this causes ICCCM hints to be applied * Added elm win trap callback for base size setting, calling this causes ICCCM hints to be applied
2013-01-07 Tom "TAsn" Hacohen 2013-01-07 Tom "TAsn" Hacohen

2
NEWS
View File

@ -67,3 +67,5 @@ Fixes:
* entry/scrollframe: Fixed issues with submembers. * entry/scrollframe: Fixed issues with submembers.
* Fixed bug where keyboard resizing of windows would not be possible if timeout was set to zero * Fixed bug where keyboard resizing of windows would not be possible if timeout was set to zero
* Fixed crash when clicking apply in wallpaper settings dialog and no wallpaper is selected * Fixed crash when clicking apply in wallpaper settings dialog and no wallpaper is selected
* Fixed bug where disabled slider widgets could be changed with mouse wheel
* Fixed bug where fileman config slider widgets were not properly disabled

View File

@ -23,6 +23,7 @@ struct _E_Smart_Data
Evas_Coord minw, minh; Evas_Coord minw, minh;
Ecore_Timer *set_timer; Ecore_Timer *set_timer;
Eina_List *special_values; Eina_List *special_values;
Eina_Bool disabled : 1;
}; };
struct _E_Slider_Special_Value struct _E_Slider_Special_Value
@ -205,6 +206,13 @@ e_slider_direction_set(Evas_Object *obj, int reversed)
_e_smart_value_update_now(sd); _e_smart_value_update_now(sd);
} }
EAPI void
e_slider_disabled_set(Evas_Object *obj, Eina_Bool disable)
{
API_ENTRY return;
sd->disabled = disable;
}
EAPI int EAPI int
e_slider_direction_get(Evas_Object *obj) e_slider_direction_get(Evas_Object *obj)
{ {
@ -397,6 +405,7 @@ _e_smart_signal_cb_wheel_up(void *data, Evas_Object *obj __UNUSED__, const char
{ {
E_Smart_Data *sd = data; E_Smart_Data *sd = data;
if (sd->disabled) return;
edje_object_part_drag_step(sd->edje_obj, "e.dragable.slider", -0.05, -0.05); edje_object_part_drag_step(sd->edje_obj, "e.dragable.slider", -0.05, -0.05);
sd->direction = -1; sd->direction = -1;
} }
@ -406,6 +415,7 @@ _e_smart_signal_cb_wheel_down(void *data, Evas_Object *obj __UNUSED__, const cha
{ {
E_Smart_Data *sd = data; E_Smart_Data *sd = data;
if (sd->disabled) return;
edje_object_part_drag_step(sd->edje_obj, "e.dragable.slider", 0.05, 0.05); edje_object_part_drag_step(sd->edje_obj, "e.dragable.slider", 0.05, 0.05);
sd->direction = 1; sd->direction = 1;
} }
@ -416,6 +426,7 @@ _e_smart_event_key_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSE
Evas_Event_Key_Down *ev = event_info; Evas_Event_Key_Down *ev = event_info;
E_Smart_Data *sd = data; E_Smart_Data *sd = data;
if (sd->disabled) return;
if ((!strcmp(ev->keyname, "Up")) || if ((!strcmp(ev->keyname, "Up")) ||
(!strcmp(ev->keyname, "KP_Up")) || (!strcmp(ev->keyname, "KP_Up")) ||
(!strcmp(ev->keyname, "Left")) || (!strcmp(ev->keyname, "Left")) ||
@ -467,6 +478,7 @@ _e_smart_event_mouse_down(void *data, Evas *e, Evas_Object *obj __UNUSED__, void
double pos; double pos;
static int in_md = 0; static int in_md = 0;
if (sd->disabled) return;
if (in_md > 0) return; if (in_md > 0) return;
in_md++; in_md++;
evas_object_geometry_get(sd->event, &x, &y, &w, &h); evas_object_geometry_get(sd->event, &x, &y, &w, &h);

View File

@ -20,7 +20,7 @@ EAPI void e_slider_direction_set (Evas_Object *obj, int rever
EAPI int e_slider_direction_get (Evas_Object *obj); EAPI int e_slider_direction_get (Evas_Object *obj);
EAPI void e_slider_size_min_get (Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh); EAPI void e_slider_size_min_get (Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh);
EAPI Evas_Object *e_slider_edje_object_get (Evas_Object *obj); EAPI Evas_Object *e_slider_edje_object_get (Evas_Object *obj);
EAPI void e_slider_disabled_set(Evas_Object *obj, Eina_Bool disable);
EAPI void e_slider_special_value_add (Evas_Object *obj, double value, double error, const char *label); EAPI void e_slider_special_value_add (Evas_Object *obj, double value, double error, const char *label);
#endif #endif
#endif #endif

View File

@ -230,9 +230,12 @@ static void
_e_wid_disable_hook(Evas_Object *obj) _e_wid_disable_hook(Evas_Object *obj)
{ {
E_Widget_Data *wd; E_Widget_Data *wd;
Eina_Bool disable;
wd = e_widget_data_get(obj); wd = e_widget_data_get(obj);
if (e_widget_disabled_get(obj)) disable = e_widget_disabled_get(obj);
e_slider_disabled_set(wd->o_slider, disable);
if (disable)
edje_object_signal_emit(e_slider_edje_object_get(wd->o_slider), edje_object_signal_emit(e_slider_edje_object_get(wd->o_slider),
"e,state,disabled", "e"); "e,state,disabled", "e");
else else

View File

@ -28,7 +28,9 @@ struct _E_Config_Dialog_Data
double delay; double delay;
double size; double size;
Eina_Bool enable; Eina_Bool enable;
Evas_Object *delay_slider_text;
Evas_Object *delay_slider; Evas_Object *delay_slider;
Evas_Object *size_slider_text;
Evas_Object *size_slider; Evas_Object *size_slider;
} tooltip; } tooltip;
/* display of icons */ /* display of icons */
@ -282,7 +284,9 @@ _tooltip_changed(void *data, Evas_Object *obj __UNUSED__)
{ {
E_Config_Dialog_Data *cfdata = data; E_Config_Dialog_Data *cfdata = data;
e_widget_disabled_set(cfdata->tooltip.delay_slider_text, !cfdata->tooltip.enable);
e_widget_disabled_set(cfdata->tooltip.delay_slider, !cfdata->tooltip.enable); e_widget_disabled_set(cfdata->tooltip.delay_slider, !cfdata->tooltip.enable);
e_widget_disabled_set(cfdata->tooltip.size_slider_text, !cfdata->tooltip.enable);
e_widget_disabled_set(cfdata->tooltip.size_slider, !cfdata->tooltip.enable); e_widget_disabled_set(cfdata->tooltip.size_slider, !cfdata->tooltip.enable);
} }
@ -453,15 +457,15 @@ _basic_create(E_Config_Dialog *cfd __UNUSED__,
(int*)&(cfdata->tooltip.enable)); (int*)&(cfdata->tooltip.enable));
e_widget_on_change_hook_set(ob, _tooltip_changed, cfdata); e_widget_on_change_hook_set(ob, _tooltip_changed, cfdata);
e_widget_list_object_append(o, ob, 1, 1, 0.5); e_widget_list_object_append(o, ob, 1, 1, 0.5);
cfdata->tooltip.delay_slider = ob = e_widget_label_add(evas, _("Tooltip delay")); cfdata->tooltip.delay_slider_text = ob = e_widget_label_add(evas, _("Tooltip delay"));
e_widget_list_object_append(o, ob, 1, 1, 0.5); e_widget_list_object_append(o, ob, 1, 1, 0.5);
ob = e_widget_slider_add(evas, 1, 0, _("%1.1f"), 0.0, 5.0, 0.5, 0, cfdata->tooltip.delay_slider = ob = e_widget_slider_add(evas, 1, 0, _("%1.1f"), 0.0, 5.0, 0.5, 0,
&cfdata->tooltip.delay, NULL, 150); &cfdata->tooltip.delay, NULL, 150);
e_widget_list_object_append(o, ob, 1, 1, 0.5); e_widget_list_object_append(o, ob, 1, 1, 0.5);
cfdata->tooltip.size_slider = ob = e_widget_label_add(evas, _("Tooltip size (Screen percentage)")); cfdata->tooltip.size_slider_text = ob = e_widget_label_add(evas, _("Tooltip size (Screen percentage)"));
e_widget_list_object_append(o, ob, 1, 1, 0.5); e_widget_list_object_append(o, ob, 1, 1, 0.5);
ob = e_widget_slider_add(evas, 1, 0, _("%2.0f"), 10.0, 75.0, 5.0, 0, cfdata->tooltip.size_slider = ob = e_widget_slider_add(evas, 1, 0, _("%2.0f"), 10.0, 75.0, 5.0, 0,
&cfdata->tooltip.size, NULL, 150); &cfdata->tooltip.size, NULL, 150);
e_widget_list_object_append(o, ob, 1, 1, 0.5); e_widget_list_object_append(o, ob, 1, 1, 0.5);
_tooltip_changed(cfdata, NULL); _tooltip_changed(cfdata, NULL);