X-Git-Url: http://wpitchoune.net/gitweb/?p=psensor-pkg-debian.git;a=blobdiff_plain;f=src%2Fui_color.c;h=cae61f0c3248af71821b4698c501d46e83b2ea44;hp=a5e1e872bdd310c8c00f923c7c31993dc621af25;hb=ee0b7212d29624b6321a0eda9c7ba1e17817ba25;hpb=f055e7507526592d3a74c652f5f053701614c9c0 diff --git a/src/ui_color.c b/src/ui_color.c index a5e1e87..cae61f0 100644 --- a/src/ui_color.c +++ b/src/ui_color.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2012 jeanfi@gmail.com + * Copyright (C) 2010-2013 jeanfi@gmail.com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -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));