Version 0.3
[colorize.git] / gui / main.c
index 71cff5f..c89da3c 100644 (file)
@@ -412,22 +412,23 @@ GtkWidget *colorseldlg = NULL;
 GtkColorSelection *colorsel;
 static void color_response(GtkDialog *dialog, gint response_id, gpointer user_data)
 {
-       if (response_id == GTK_RESPONSE_CANCEL) {
-               gtk_widget_destroy(colorseldlg);
-               colorseldlg = NULL;
-       }
-       if (response_id == GTK_RESPONSE_OK) {
-               GdkColor ncolor;
+       GdkColor ncolor;
 
+       switch (response_id) {
+       case GTK_RESPONSE_CANCEL:
+               gtk_color_selection_get_previous_color(colorsel, &ncolor);
+new_color:
                anything_modified = 1;
 
-               gtk_color_selection_get_current_color(colorsel, &ncolor);
-               gtk_color_selection_set_previous_color(colorsel, &ncolor);
                mark_palette[mark_selected].r = ncolor.red / 256;
                mark_palette[mark_selected].g = ncolor.green / 256;
                mark_palette[mark_selected].b = ncolor.blue / 256;
                update_color(mark_selected);
                draw_image(0, 0, -1, -1);
+               break;
+       case GTK_RESPONSE_OK:
+               gtk_color_selection_get_current_color(colorsel, &ncolor);
+               goto new_color;
        }
 }
 
@@ -473,7 +474,7 @@ static void open_event(gpointer priv)
                
                create_timeline(filename);
                if (frame_list)
-                       create_image(frame_list[timeline_selected].filename);
+                       create_image(frame_list[timeline_selected].filename, 1);
                free(filename);
        }
 
@@ -809,8 +810,10 @@ void palette_change(GtkTreeSelection *selection, gpointer data)
                        color.green = mark_palette[mark_selected].g * 256 + 128;
                        color.blue = mark_palette[mark_selected].b * 256 + 128;
 
-                       if (colorseldlg)
+                       if (colorseldlg) {
+                               gtk_color_selection_set_previous_color (colorsel, &color);
                                gtk_color_selection_set_current_color (colorsel, &color);
+                       }
                }
 
                /* set current color for bightness+contrast window */
@@ -1206,7 +1209,7 @@ int main(int argc, char *argv[])
        if (argc > 1) {
                create_timeline(argv[1]);
                if (frame_list)
-                       create_image(frame_list[timeline_selected].filename);
+                       create_image(frame_list[timeline_selected].filename, 1);
        }
 
        gtk_main();