diff --git a/src/bin/e_color_dialog.c b/src/bin/e_color_dialog.c index d3f755536..a489a2389 100644 --- a/src/bin/e_color_dialog.c +++ b/src/bin/e_color_dialog.c @@ -8,6 +8,7 @@ static void _e_color_dialog_button1_click(void *data, E_Dialog *edia); static void _e_color_dialog_button2_click(void *data, E_Dialog *edia); static void _e_color_dialog_free(E_Color_Dialog *dia); static void _e_color_dialog_dia_del(void *obj); +static void _e_color_dialog_cb_csel_change(void *data, Evas_Object *obj); /** * Create a color selector dialog. @@ -38,6 +39,7 @@ e_color_dialog_new(E_Container *con, const E_Color *color) evas_object_show(o); e_widget_min_size_get(o, &mw, &mh); e_dialog_content_set(dia->dia, o, 460, 260); + e_widget_on_change_hook_set(o, _e_color_dialog_cb_csel_change, dia); /* buttons at the bottom */ e_dialog_button_add(dia->dia, "OK", NULL, _e_color_dialog_button1_click, dia); @@ -65,19 +67,37 @@ e_color_dialog_title_set(E_Color_Dialog *dia, const char *title) } void -e_color_dialog_select_callback_add(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data) +e_color_dialog_select_callback_set(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data) { dia->select_func = func; dia->select_data = data; } void -e_color_dialog_cancel_callback_add(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data) +e_color_dialog_cancel_callback_set(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data) { dia->cancel_func = func; dia->cancel_data = 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) +{ + dia->change_func = func; + dia->change_data = data; +} + +static void +_e_color_dialog_cb_csel_change(void *data, Evas_Object *obj) +{ + E_Color_Dialog *dia; + dia = data; + printf("COLOR DIALOG csel change\n"); + if (dia->change_func && dia->color) + dia->change_func(dia, dia->color, dia->change_data); +} + static void _e_color_dialog_button1_click(void *data, E_Dialog *edia) { diff --git a/src/bin/e_color_dialog.h b/src/bin/e_color_dialog.h index 0311f0bf2..03cd88a43 100644 --- a/src/bin/e_color_dialog.h +++ b/src/bin/e_color_dialog.h @@ -24,13 +24,16 @@ struct _E_Color_Dialog void *select_data; void (*cancel_func)(E_Color_Dialog *dia, E_Color *color, void *data); void *cancel_data; + void (*change_func)(E_Color_Dialog *dia, E_Color *color, void *data); + void *change_data; }; 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); -EAPI void e_color_dialog_select_callback_add(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data); -EAPI void e_color_dialog_cancel_callback_add(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_change_callback_set(E_Color_Dialog *dia, void (*func)(E_Color_Dialog *dia, E_Color *color, void *data), void *data); #endif #endif diff --git a/src/bin/e_test.c b/src/bin/e_test.c index 7370a94c3..506244425 100644 --- a/src/bin/e_test.c +++ b/src/bin/e_test.c @@ -668,7 +668,7 @@ _e_test_internal(E_Container *con) d = e_color_dialog_new(con, NULL); e_color_dialog_show(d); - e_color_dialog_select_callback_add(d, _e_test_cb_ok, NULL); + e_color_dialog_select_callback_set(d, _e_test_cb_ok, NULL); } #else diff --git a/src/bin/e_widget_color_well.c b/src/bin/e_widget_color_well.c index 3eb0f5799..6ea620f4f 100644 --- a/src/bin/e_widget_color_well.c +++ b/src/bin/e_widget_color_well.c @@ -20,6 +20,7 @@ static void _e_wid_update(E_Widget_Data *wd); static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source); static void _e_wid_color_select_cb(E_Color_Dialog *dia, E_Color *color, void *data); static void _e_wid_color_cancel_cb(E_Color_Dialog *dia, E_Color *color, void *data); +static void _e_wid_color_change_cb(E_Color_Dialog *dia, E_Color *color, void *data); static void _e_wid_disable_hook(Evas_Object *obj); static void @@ -48,8 +49,9 @@ _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char if (!wd->dia) { wd->dia = e_color_dialog_new(wd->con, wd->color); - e_color_dialog_select_callback_add(wd->dia, _e_wid_color_select_cb, wd); - e_color_dialog_cancel_callback_add(wd->dia, _e_wid_color_cancel_cb, wd); + e_color_dialog_select_callback_set(wd->dia, _e_wid_color_select_cb, wd); + e_color_dialog_cancel_callback_set(wd->dia, _e_wid_color_cancel_cb, wd); + e_color_dialog_change_callback_set(wd->dia, _e_wid_color_change_cb, wd); } e_color_dialog_show(wd->dia); } @@ -72,6 +74,16 @@ _e_wid_color_cancel_cb(E_Color_Dialog *dia, E_Color *color, void *data) wd->dia = NULL; } +static void +_e_wid_color_change_cb(E_Color_Dialog *dia, E_Color *color, void *data) +{ + E_Widget_Data *wd; + wd = data; + printf("COLOR WELL change_cb\n"); + e_color_copy(color, wd->color); + _e_wid_update(wd); +} + static void _e_wid_del_hook(Evas_Object *obj) {