store the initial color when opening a color dialog, and return that on cancel

use this in color well


SVN revision: 26590
This commit is contained in:
rephorm 2006-10-14 05:04:01 +00:00 committed by rephorm
parent 5526d92029
commit 71dd864f27
3 changed files with 11 additions and 3 deletions

View File

@ -29,12 +29,15 @@ e_color_dialog_new(E_Container *con, const E_Color *color)
e_dialog_title_set(dia->dia, "Color Selector");
dia->color = calloc(1, sizeof(E_Color));
dia->initial = calloc(1, sizeof(E_Color));
if (color)
e_color_copy(color, dia->color);
else
dia->color->a = 255;
e_color_copy(dia->color, dia->initial);
o = e_widget_csel_add(dia->dia->win->evas, dia->color);
evas_object_show(o);
e_widget_min_size_get(o, &mw, &mh);
@ -114,8 +117,8 @@ _e_color_dialog_button2_click(void *data, E_Dialog *edia)
E_Color_Dialog *dia;
dia = data;
if(dia->cancel_func && dia->color)
dia->cancel_func(dia, dia->color, dia->cancel_data);
if(dia->cancel_func && dia->initial)
dia->cancel_func(dia, dia->initial, dia->cancel_data);
_e_color_dialog_free(data);
}

View File

@ -18,7 +18,7 @@ struct _E_Color_Dialog
E_Container *con;
E_Dialog *dia;
E_Color *color;
E_Color *color, *initial;
void (*select_func)(E_Color_Dialog *dia, E_Color *color, void *data);
void *select_data;
@ -31,6 +31,8 @@ struct _E_Color_Dialog
EAPI E_Color_Dialog *e_color_dialog_new (E_Container *con, const E_Color *initial_color);
EAPI void e_color_dialog_show (E_Color_Dialog *dia);
EAPI void e_color_dialog_title_set (E_Color_Dialog *dia, const char *title);
/* select and change pass the current color back, cancel passes the initial color */
EAPI void e_color_dialog_select_callback_set(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data);
EAPI void e_color_dialog_cancel_callback_set(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data);
EAPI void e_color_dialog_change_callback_set(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data);

View File

@ -71,6 +71,9 @@ _e_wid_color_cancel_cb(E_Color_Dialog *dia, E_Color *color, void *data)
{
E_Widget_Data *wd;
wd = data;
/* cancel sends the original color back */
e_color_copy(color, wd->color);
_e_wid_update(wd);
wd->dia = NULL;
}