diff --git a/src/bin/e_color.c b/src/bin/e_color.c index 16730f309..d616b7e6a 100644 --- a/src/bin/e_color.c +++ b/src/bin/e_color.c @@ -19,7 +19,7 @@ e_color_update_hsv(E_Color *ec) } void -e_color_copy(E_Color *from, E_Color *to) +e_color_copy(const E_Color *from, E_Color *to) { if (!from || !to) return; to->r = from->r; diff --git a/src/bin/e_color.h b/src/bin/e_color.h index af0186a0f..1cbb582ff 100644 --- a/src/bin/e_color.h +++ b/src/bin/e_color.h @@ -31,6 +31,6 @@ struct _E_Color EAPI void e_color_update_rgb (E_Color *ec); EAPI void e_color_update_hsv (E_Color *ec); -EAPI void e_color_copy (E_Color *from, E_Color *to); +EAPI void e_color_copy (const E_Color *from, E_Color *to); #endif #endif diff --git a/src/bin/e_color_dialog.c b/src/bin/e_color_dialog.c index 370139874..1d477664c 100644 --- a/src/bin/e_color_dialog.c +++ b/src/bin/e_color_dialog.c @@ -8,8 +8,14 @@ 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); +/** + * Create a color selector dialog. + * + * @param con container to display on + * @param color color to initialize to (or NULL for black). + */ E_Color_Dialog * -e_color_dialog_new (E_Container *con) +e_color_dialog_new (E_Container *con, const E_Color *color) { E_Color_Dialog *dia; Evas_Object *o; @@ -21,7 +27,11 @@ e_color_dialog_new (E_Container *con) e_dialog_title_set(dia->dia, "Color Selector"); dia->color = calloc(1, sizeof(E_Color)); - dia->color->a = 255; + + if (color) + e_color_copy(color, dia->color); + else + dia->color->a = 255; o = e_widget_csel_add(dia->dia->win->evas, dia->color); evas_object_show(o); diff --git a/src/bin/e_color_dialog.h b/src/bin/e_color_dialog.h index 8256b3976..7122b60c9 100644 --- a/src/bin/e_color_dialog.h +++ b/src/bin/e_color_dialog.h @@ -26,7 +26,7 @@ struct _E_Color_Dialog void *cancel_data; }; -EAPI E_Color_Dialog *e_color_dialog_new (E_Container *con); +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); diff --git a/src/bin/e_int_config_wallpaper_gradient.c b/src/bin/e_int_config_wallpaper_gradient.c index 6a93ba1f3..e94a2c232 100644 --- a/src/bin/e_int_config_wallpaper_gradient.c +++ b/src/bin/e_int_config_wallpaper_gradient.c @@ -129,17 +129,17 @@ e_int_config_wallpaper_gradient(E_Config_Dialog *parent) evas_object_show(o); e_widget_table_object_append(ot, o, 2, 1, 1, 1, 1, 1, 1, 1); - o = e_widget_color_well_add(evas, cfdata->color1, parent->con); + o = e_widget_color_well_add(evas, cfdata->color1, 1); evas_object_show(o); e_widget_table_object_append(ot, o, 2, 2, 1, 1, 1, 1, 1, 1); - o = e_widget_color_well_add(evas, cfdata->color2, parent->con); + o = e_widget_color_well_add(evas, cfdata->color2, 1); evas_object_show(o); e_widget_table_object_append(ot, o, 2, 3, 1, 1, 1, 1, 1, 1); e_widget_list_object_append(ol, ot, 1, 1, 0.5); - of = e_widget_framelist_add(evas, "Fill and Spread Options", 1); + of = e_widget_framelist_add(evas, "Fill Options", 1); rg = e_widget_radio_group_new(&(cfdata->mode)); @@ -172,7 +172,7 @@ e_int_config_wallpaper_gradient(E_Config_Dialog *parent) e_dialog_button_add(dia, _("Cancel"), NULL, _import_cb_close, cfdata); _import_opt_disabled_set(import, 1); - e_dialog_resizable_set(dia, 1); + e_dialog_resizable_set(dia, 0); e_dialog_show(dia); return dia; } diff --git a/src/bin/e_test.c b/src/bin/e_test.c index 9f9e9cace..cf680c99c 100644 --- a/src/bin/e_test.c +++ b/src/bin/e_test.c @@ -662,7 +662,7 @@ _e_test_internal(E_Container *con) { E_Color_Dialog *d; - d = e_color_dialog_new(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); } diff --git a/src/bin/e_widget_color_well.c b/src/bin/e_widget_color_well.c index bdd136394..a147ca306 100644 --- a/src/bin/e_widget_color_well.c +++ b/src/bin/e_widget_color_well.c @@ -13,6 +13,7 @@ struct _E_Widget_Data E_Color_Dialog *dia; E_Color *color; E_Container *con; // container to pop a color dialog up on + int show_color_dialog; }; static void _e_wid_update(E_Widget_Data *wd); @@ -38,10 +39,10 @@ _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char wid = data; wd = e_widget_data_get(wid); - if (!wd->con) return; + if (!wd->show_color_dialog || !wd->con) return; if (!wd->dia) { - wd->dia = e_color_dialog_new(wd->con); + 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); } @@ -83,11 +84,12 @@ _e_wid_del_hook(Evas_Object *obj) * An optional E_Container may be passed in. If not NULL, when clicked a color dialog will pop up. */ Evas_Object * -e_widget_color_well_add(Evas *evas, E_Color *color, E_Container *con) +e_widget_color_well_add(Evas *evas, E_Color *color, int show_color_dialog) { Evas_Object *obj, *o; Evas_Coord mw, mh; E_Widget_Data *wd; + E_Win *win; obj = e_widget_add(evas); e_widget_del_hook_set(obj, _e_wid_del_hook); @@ -97,7 +99,10 @@ e_widget_color_well_add(Evas *evas, E_Color *color, E_Container *con) wd->obj = obj; wd->color = color; - wd->con = con; + win = e_win_evas_object_win_get(obj); + wd->con = win->container; + + wd->show_color_dialog = show_color_dialog; o = edje_object_add(evas); e_widget_sub_object_add(obj, o); diff --git a/src/bin/e_widget_color_well.h b/src/bin/e_widget_color_well.h index 3333beebd..10e6313ac 100644 --- a/src/bin/e_widget_color_well.h +++ b/src/bin/e_widget_color_well.h @@ -1,7 +1,7 @@ #ifndef E_WIDGET_COLOR_WELL_H #define E_WIDGET_COLOR_WELL_H -EAPI Evas_Object *e_widget_color_well_add (Evas *evas, E_Color *color, E_Container *con); +EAPI Evas_Object *e_widget_color_well_add (Evas *evas, E_Color *color, int show_color_dialog); EAPI void e_widget_color_well_update (Evas_Object *obj); #endif diff --git a/src/bin/e_widget_csel.c b/src/bin/e_widget_csel.c index a8641579e..dc515aa95 100644 --- a/src/bin/e_widget_csel.c +++ b/src/bin/e_widget_csel.c @@ -256,7 +256,7 @@ e_widget_csel_add(Evas *evas, E_Color *color) e_widget_table_object_append(table, frame, 3, 1, 1, 1, 1, 1, 1, 1); - o = e_widget_color_well_add(evas, wd->cv, NULL); + o = e_widget_color_well_add(evas, wd->cv, 0); e_widget_sub_object_add(obj, o); evas_object_show(o); wd->well = o;