store the initial color when opening a color dialog, and return that on cancel
authorrephorm <rephorm>
Sat, 14 Oct 2006 05:04:01 +0000 (05:04 +0000)
committerrephorm <rephorm@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 14 Oct 2006 05:04:01 +0000 (05:04 +0000)
use this in color well

SVN revision: 26590

src/bin/e_color_dialog.c
src/bin/e_color_dialog.h
src/bin/e_widget_color_well.c

index 0585644..faa7565 100644 (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);         
 }
 
index 03cd88a..d60449f 100644 (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);
index 18bc8e5..b3005af 100644 (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;
 }