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"); e_dialog_title_set(dia->dia, "Color Selector");
dia->color = calloc(1, sizeof(E_Color)); dia->color = calloc(1, sizeof(E_Color));
dia->initial = calloc(1, sizeof(E_Color));
if (color) if (color)
e_color_copy(color, dia->color); e_color_copy(color, dia->color);
else else
dia->color->a = 255; dia->color->a = 255;
e_color_copy(dia->color, dia->initial);
o = e_widget_csel_add(dia->dia->win->evas, dia->color); o = e_widget_csel_add(dia->dia->win->evas, dia->color);
evas_object_show(o); evas_object_show(o);
e_widget_min_size_get(o, &mw, &mh); 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; E_Color_Dialog *dia;
dia = data; dia = data;
if(dia->cancel_func && dia->color) if(dia->cancel_func && dia->initial)
dia->cancel_func(dia, dia->color, dia->cancel_data); dia->cancel_func(dia, dia->initial, dia->cancel_data);
_e_color_dialog_free(data); _e_color_dialog_free(data);
} }

View File

@ -18,7 +18,7 @@ struct _E_Color_Dialog
E_Container *con; E_Container *con;
E_Dialog *dia; E_Dialog *dia;
E_Color *color; E_Color *color, *initial;
void (*select_func)(E_Color_Dialog *dia, E_Color *color, void *data); void (*select_func)(E_Color_Dialog *dia, E_Color *color, void *data);
void *select_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 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_show (E_Color_Dialog *dia);
EAPI void e_color_dialog_title_set (E_Color_Dialog *dia, const char *title); 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_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_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); 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; E_Widget_Data *wd;
wd = data; wd = data;
/* cancel sends the original color back */
e_color_copy(color, wd->color);
_e_wid_update(wd);
wd->dia = NULL; wd->dia = NULL;
} }