X-Git-Url: https://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fui_color.c;fp=src%2Fui_color.c;h=cae61f0c3248af71821b4698c501d46e83b2ea44;hb=97831c4b309f58946df2a582b2ab466e65b2684f;hp=f34727e411234acb14d86f85f9198e5714c15afa;hpb=4be2ee06492365223a3b2043c9da28175fac6041;p=psensor.git diff --git a/src/ui_color.c b/src/ui_color.c index f34727e..cae61f0 100644 --- a/src/ui_color.c +++ b/src/ui_color.c @@ -20,31 +20,50 @@ #include "ui_color.h" -int ui_change_color(const char *title, struct color *col) +int ui_change_color(const char *title, struct color *col, GtkWindow *win) { - GdkColor color; - GtkColorSelection *colorsel; + GdkRGBA color; int res; - GtkColorSelectionDialog *colordlg; + GtkColorChooserDialog *colordlg; + double r, g, b; color.red = col->red; color.green = col->green; color.blue = col->blue; + color.alpha = 1; - colordlg = GTK_COLOR_SELECTION_DIALOG - (gtk_color_selection_dialog_new(title)); + colordlg = GTK_COLOR_CHOOSER_DIALOG + (gtk_color_chooser_dialog_new(title, win)); - colorsel = GTK_COLOR_SELECTION - (gtk_color_selection_dialog_get_color_selection(colordlg)); + gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(colordlg), 0); - gtk_color_selection_set_current_color(colorsel, &color); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(colordlg), &color); res = gtk_dialog_run(GTK_DIALOG(colordlg)); if (res == GTK_RESPONSE_OK) { - gtk_color_selection_get_current_color(colorsel, &color); + gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(colordlg), &color); - color_set(col, color.red, color.green, color.blue); + /* GdkRGBA defines rgb as double 0..1 but chooser returns + * values > 1 when selecting a custom undefined color. + * Not sure whether that's a gtk/gdk bug. */ + + if (color.red > 1) + r = 1; + else + r = color.red; + + if (color.green > 1) + g = 1; + else + g = color.green; + + if (color.blue > 1) + b = 1; + else + b = color.blue; + + color_set(col, 65535*r, 65535*g, 65535*b); } gtk_widget_destroy(GTK_WIDGET(colordlg));