diff --git a/ChangeLog b/ChangeLog index c52ad641b..e04ba3f07 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-06-19 Mike Blumenkrantz + + * added check changed to shelf config dialog + 2013-06-18 Mike Blumenkrantz * fixed crash when multiple windows shared a remember diff --git a/NEWS b/NEWS index 230da3124..523ecdc81 100644 --- a/NEWS +++ b/NEWS @@ -146,6 +146,7 @@ Improvements: * border menu now has top-level item to set borderless state * added dnd support for text/x-moz-url * filemanager dnd operations now show all files when dragging + * added check changed to shelf config dialog Fixes: * IBar menu didn't allow to configure different icon sources, show contents menu even on empty IBar. diff --git a/src/bin/e_int_shelf_config.c b/src/bin/e_int_shelf_config.c index 9cd92802d..2f306514d 100644 --- a/src/bin/e_int_shelf_config.c +++ b/src/bin/e_int_shelf_config.c @@ -12,7 +12,7 @@ struct _E_Config_Dialog_Data int orient, fit_along; int size; const char *style; - int autohide, autohide_action; + int autohide, autohide_show_action; double hide_timeout, hide_duration; int desk_show_mode; Eina_List *handlers; @@ -21,6 +21,7 @@ struct _E_Config_Dialog_Data /* local function prototypes */ static void *_create_data(E_Config_Dialog *cfd); static void _fill_data(E_Config_Dialog_Data *cfdata); +static int _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata); static void _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata); static Evas_Object *_basic_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data *cfdata); static int _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); @@ -39,6 +40,7 @@ e_int_shelf_config(E_Shelf *es) v->free_cfdata = _free_data; v->basic.create_widgets = _basic_create; v->basic.apply_cfdata = _basic_apply; + v->basic.check_changed = _basic_check_changed; es->config_dialog = e_config_dialog_new(es->zone->container, _("Shelf Settings"), @@ -103,7 +105,7 @@ _fill_data(E_Config_Dialog_Data *cfdata) /* autohide */ cfdata->autohide = cfdata->escfg->autohide; - cfdata->autohide_action = cfdata->escfg->autohide_show_action; + cfdata->autohide_show_action = cfdata->escfg->autohide_show_action; cfdata->hide_timeout = cfdata->escfg->hide_timeout; cfdata->hide_duration = cfdata->escfg->hide_duration; @@ -112,6 +114,32 @@ _fill_data(E_Config_Dialog_Data *cfdata) cfdata->desk_list = cfdata->escfg->desk_list; } +static int +_basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata) +{ + if (cfdata->escfg->popup) + { + if (cfdata->layer != 1 + (!!cfdata->escfg->layer)) return 1; + } + else + { + if (cfdata->layer) return 1; + } +#define CHECK(X) if (cfdata->X != cfdata->escfg->X) return 1 + CHECK(overlap); + CHECK(orient); + CHECK(fit_along); + CHECK(size); + CHECK(style); + CHECK(autohide); + CHECK(autohide_show_action); + CHECK(desk_show_mode); + CHECK(desk_list); + if (fabs(cfdata->hide_timeout - cfdata->escfg->hide_timeout > 0.19)) return 1; + if (fabs(cfdata->hide_timeout - cfdata->escfg->hide_timeout > 0.04)) return 1; + return 0; +} + static void _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata) { @@ -213,7 +241,7 @@ _basic_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data e_widget_on_change_hook_set(cfdata->o_autohide, _cb_autohide_change, cfdata); e_widget_list_object_append(ol, cfdata->o_autohide, 1, 1, 0.5); - rg = e_widget_radio_group_new(&(cfdata->autohide_action)); + rg = e_widget_radio_group_new(&(cfdata->autohide_show_action)); ow = e_widget_radio_add(evas, _("Show on mouse in"), 0, rg); e_widget_disabled_set(ow, !cfdata->autohide); cfdata->autohide_list = eina_list_append(cfdata->autohide_list, ow); @@ -324,8 +352,8 @@ _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) } cfdata->escfg->overlap = cfdata->overlap; - e_shelf_autohide_set(cfdata->es, cfdata->autohide + (cfdata->autohide * cfdata->autohide_action)); - cfdata->escfg->autohide_show_action = cfdata->autohide_action; + e_shelf_autohide_set(cfdata->es, cfdata->autohide + (cfdata->autohide * cfdata->autohide_show_action)); + cfdata->escfg->autohide_show_action = cfdata->autohide_show_action; cfdata->escfg->hide_timeout = cfdata->hide_timeout; cfdata->escfg->hide_duration = cfdata->hide_duration; cfdata->escfg->desk_show_mode = cfdata->desk_show_mode;