}
}
+/* Create the dialog and connects its buttons */
static void
-gtk_color_button_clicked (GtkButton *b)
+ensure_dialog (GtkColorButton *button)
{
- GtkColorButton *button = GTK_COLOR_BUTTON (b);
- GtkWidget *dialog;
+ GtkWidget *parent, *dialog;
- /* if dialog already exists, make sure it's shown and raised */
- if (!button->priv->cs_dialog)
- {
- /* Create the dialog and connects its buttons */
- GtkWidget *parent;
+ if (button->priv->cs_dialog != NULL)
+ return;
- parent = gtk_widget_get_toplevel (GTK_WIDGET (button));
+ parent = gtk_widget_get_toplevel (GTK_WIDGET (button));
- button->priv->cs_dialog = dialog = gtk_color_chooser_dialog_new (button->priv->title, NULL);
+ button->priv->cs_dialog = dialog = gtk_color_chooser_dialog_new (button->priv->title, NULL);
- if (gtk_widget_is_toplevel (parent) && GTK_IS_WINDOW (parent))
- {
- if (GTK_WINDOW (parent) != gtk_window_get_transient_for (GTK_WINDOW (dialog)))
- gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent));
+ if (gtk_widget_is_toplevel (parent) && GTK_IS_WINDOW (parent))
+ {
+ if (GTK_WINDOW (parent) != gtk_window_get_transient_for (GTK_WINDOW (dialog)))
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent));
- gtk_window_set_modal (GTK_WINDOW (dialog),
- gtk_window_get_modal (GTK_WINDOW (parent)));
- }
+ gtk_window_set_modal (GTK_WINDOW (dialog),
+ gtk_window_get_modal (GTK_WINDOW (parent)));
+ }
+
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (dialog_response), button);
+ g_signal_connect (dialog, "destroy",
+ G_CALLBACK (dialog_destroy), button);
+}
- g_signal_connect (dialog, "response",
- G_CALLBACK (dialog_response), button);
- g_signal_connect (dialog, "destroy",
- G_CALLBACK (dialog_destroy), button);
- }
+
+static void
+gtk_color_button_clicked (GtkButton *b)
+{
+ GtkColorButton *button = GTK_COLOR_BUTTON (b);
+
+ /* if dialog already exists, make sure it's shown and raised */
+ ensure_dialog (button);
gtk_color_chooser_set_use_alpha (GTK_COLOR_CHOOSER (button->priv->cs_dialog),
button->priv->use_alpha);
}
/**
- * gtk_color_button_set_rgba:
+ * gtk_color_button_set_rgba: (skip)
* @button: a #GtkColorButton
* @rgba: a #GdkRGBA to set the current color with
*
{
GtkColorButton *button = GTK_COLOR_BUTTON (chooser);
- if (button->priv->cs_dialog)
- gtk_color_chooser_add_palette (GTK_COLOR_CHOOSER (button->priv->cs_dialog),
+ ensure_dialog (button);
+
+ gtk_color_chooser_add_palette (GTK_COLOR_CHOOSER (button->priv->cs_dialog),
orientation, colors_per_line, n_colors, colors);
}