[gtk+] colorchooser: Allow removing the palettes again
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] colorchooser: Allow removing the palettes again
- Date: Sun, 4 Mar 2012 05:29:00 +0000 (UTC)
commit 5a8dba7eacc024f1b9893b1a42255b8c5af94bf0
Author: Christian Persch <chpe gnome org>
Date: Sun Mar 4 00:28:08 2012 -0500
colorchooser: Allow removing the palettes again
https://bugzilla.gnome.org/show_bug.cgi?id=671057
gtk/gtkcolorchooser.c | 8 +++++++-
gtk/gtkcolorchooser.h | 1 +
gtk/gtkcolorchooserwidget.c | 36 +++++++++++++++++++++++-------------
tests/testcolorchooser.c | 5 +++++
4 files changed, 36 insertions(+), 14 deletions(-)
---
diff --git a/gtk/gtkcolorchooser.c b/gtk/gtkcolorchooser.c
index b98eb70..869f73b 100644
--- a/gtk/gtkcolorchooser.c
+++ b/gtk/gtkcolorchooser.c
@@ -143,6 +143,8 @@ gtk_color_chooser_get_rgba (GtkColorChooser *chooser,
* @color: the new color
*
* Sets the color.
+ *
+ * Since: 3.4
*/
void
gtk_color_chooser_set_rgba (GtkColorChooser *chooser,
@@ -203,7 +205,7 @@ gtk_color_chooser_set_use_alpha (GtkColorChooser *chooser,
* %FALSE for columns
* @colors_per_line: the number of colors to show in each row/column
* @n_colors: the total number of elements in @colors
- * @colors: (array length=n_colors): the colors of the palette
+ * @colors: (allow-none) (array length=n_colors): the colors of the palette, or %NULL
*
* Adds a palette to the color chooser. If @horizontal is %TRUE,
* the colors are grouped in rows, with @colors_per_line colors
@@ -220,6 +222,10 @@ gtk_color_chooser_set_use_alpha (GtkColorChooser *chooser,
* Calling this function is called for the first time has the
* side effect of removing the default color and gray palettes
* from the color chooser.
+ *
+ * If @colors is %NULL, removes all previously added palettes.
+ *
+ * Since: 3.4
*/
void
gtk_color_chooser_add_palette (GtkColorChooser *chooser,
diff --git a/gtk/gtkcolorchooser.h b/gtk/gtkcolorchooser.h
index fd54101..f64d4fe 100644
--- a/gtk/gtkcolorchooser.h
+++ b/gtk/gtkcolorchooser.h
@@ -70,6 +70,7 @@ void gtk_color_chooser_set_rgba (GtkColorChooser *chooser,
const GdkRGBA *color);
GDK_AVAILABLE_IN_3_4
gboolean gtk_color_chooser_get_use_alpha (GtkColorChooser *chooser);
+
GDK_AVAILABLE_IN_3_4
void gtk_color_chooser_set_use_alpha (GtkColorChooser *chooser,
gboolean use_alpha);
diff --git a/gtk/gtkcolorchooserwidget.c b/gtk/gtkcolorchooserwidget.c
index 05b87bd..ff51d73 100644
--- a/gtk/gtkcolorchooserwidget.c
+++ b/gtk/gtkcolorchooserwidget.c
@@ -290,6 +290,22 @@ 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,
@@ -306,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);
@@ -372,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;
}
diff --git a/tests/testcolorchooser.c b/tests/testcolorchooser.c
index fc06772..2ef8808 100644
--- a/tests/testcolorchooser.c
+++ b/tests/testcolorchooser.c
@@ -84,6 +84,11 @@ main (int argc, char *argv[])
9, 9*9,
colors);
}
+ else if (g_strcmp0 (argv[i], "--no-palette") == 0)
+ {
+ gtk_color_chooser_add_palette (GTK_COLOR_CHOOSER (dialog),
+ FALSE, 0, NULL, 0);
+ }
}
g_signal_connect (dialog, "notify::color", G_CALLBACK (color_changed), NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]