X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkcolorchooserwidget.c;h=be954a26687421d4800fd072c85f3380afb7a534;hb=ecddf94f4324b9e9ef961771e7cbb5ff56661997;hp=fad55fa57706dd1916782b941bc73de2acf04a4e;hpb=453aecd3460bb80a932aa0bc151f1892ac4cca1c;p=~andy%2Fgtk diff --git a/gtk/gtkcolorchooserwidget.c b/gtk/gtkcolorchooserwidget.c index fad55fa57..be954a266 100644 --- a/gtk/gtkcolorchooserwidget.c +++ b/gtk/gtkcolorchooserwidget.c @@ -13,9 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ #include "config.h" @@ -276,7 +274,7 @@ scale_round (gdouble value, gdouble scale) return (guint)value; } -gchar * +static gchar * accessible_color_name (GdkRGBA *color) { if (color->alpha < 1.0) @@ -292,10 +290,26 @@ accessible_color_name (GdkRGBA *color) scale_round (color->blue, 100)); } +static void +remove_palette (GtkColorChooserWidget *cc) +{ + GList *children, *l; + GtkWidget *widget; + + children = gtk_container_get_children (GTK_CONTAINER (cc->priv->palette)); + for (l = children; l; l = l->next) + { + widget = l->data; + if (widget == cc->priv->custom_label || widget == cc->priv->custom) + continue; + gtk_container_remove (GTK_CONTAINER (cc->priv->palette), widget); + } + g_list_free (children); +} static void add_palette (GtkColorChooserWidget *cc, - gboolean horizontal, + GtkOrientation orientation, gint colors_per_line, gint n_colors, GdkRGBA *colors, @@ -308,6 +322,12 @@ add_palette (GtkColorChooserWidget *cc, gint i; gint left, right; + if (colors == NULL) + { + remove_palette (cc); + return; + } + grid = gtk_grid_new (); gtk_widget_set_margin_bottom (grid, 12); gtk_grid_set_row_spacing (GTK_GRID (grid), 2); @@ -348,7 +368,7 @@ add_palette (GtkColorChooserWidget *cc, line = i / colors_per_line; pos = i % colors_per_line; - if (horizontal) + if (orientation == GTK_ORIENTATION_HORIZONTAL) { if (pos == left) gtk_style_context_add_class (gtk_widget_get_style_context (p), GTK_STYLE_CLASS_LEFT); @@ -374,22 +394,10 @@ add_palette (GtkColorChooserWidget *cc, static void remove_default_palette (GtkColorChooserWidget *cc) { - GList *children, *l; - GtkWidget *widget; - if (!cc->priv->has_default_palette) return; - children = gtk_container_get_children (GTK_CONTAINER (cc->priv->palette)); - for (l = children; l; l = l->next) - { - widget = l->data; - if (widget == cc->priv->custom_label || widget == cc->priv->custom) - continue; - gtk_container_remove (GTK_CONTAINER (cc->priv->palette), widget); - } - g_list_free (children); - + remove_palette (cc); cc->priv->has_default_palette = FALSE; } @@ -465,12 +473,12 @@ add_default_palette (GtkColorChooserWidget *cc) for (j = 0; j < 3; j++) gdk_rgba_parse (&colors[i*3 + j], default_colors[i][j]); - add_palette (cc, FALSE, 3, 9*3, colors, color_names); + add_palette (cc, GTK_ORIENTATION_VERTICAL, 3, 9*3, colors, color_names); for (i = 0; i < 9; i++) gdk_rgba_parse (&colors[i], default_grays[i]); - add_palette (cc, TRUE, 9, 9, colors, gray_names); + add_palette (cc, GTK_ORIENTATION_HORIZONTAL, 9, 9, colors, gray_names); cc->priv->has_default_palette = TRUE; } @@ -510,6 +518,7 @@ gtk_color_chooser_widget_init (GtkColorChooserWidget *cc) gtk_box_pack_end (GTK_BOX (cc->priv->palette), label, FALSE, TRUE, 0); cc->priv->button = button = gtk_color_swatch_new (); + gtk_widget_set_name (button, "add-color-button"); atk_obj = gtk_widget_get_accessible (button); atk_object_set_role (atk_obj, ATK_ROLE_PUSH_BUTTON); atk_object_set_description (atk_obj, _("Create custom color")); @@ -517,8 +526,7 @@ gtk_color_chooser_widget_init (GtkColorChooserWidget *cc) gtk_color_swatch_set_icon (GTK_COLOR_SWATCH (button), "list-add-symbolic"); gtk_container_add (GTK_CONTAINER (box), button); - cc->priv->settings = g_settings_new_with_path ("org.gtk.Settings.ColorChooser", - "/org/gtk/settings/color-chooser/"); + cc->priv->settings = g_settings_new ("org.gtk.Settings.ColorChooser"); variant = g_settings_get_value (cc->priv->settings, "custom-colors"); g_variant_iter_init (&iter, variant); i = 0; @@ -752,6 +760,7 @@ gtk_color_chooser_widget_set_rgba (GtkColorChooser *chooser, { select_swatch (cc, swatch); g_list_free (children); + g_list_free (palettes); return; } } @@ -764,7 +773,7 @@ gtk_color_chooser_widget_set_rgba (GtkColorChooser *chooser, static void gtk_color_chooser_widget_add_palette (GtkColorChooser *chooser, - gboolean horizontal, + GtkOrientation orientation, gint colors_per_line, gint n_colors, GdkRGBA *colors) @@ -772,7 +781,7 @@ gtk_color_chooser_widget_add_palette (GtkColorChooser *chooser, GtkColorChooserWidget *cc = GTK_COLOR_CHOOSER_WIDGET (chooser); remove_default_palette (cc); - add_palette (cc, horizontal, colors_per_line, n_colors, colors, NULL); + add_palette (cc, orientation, colors_per_line, n_colors, colors, NULL); } static void