]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkcolorbutton.c
stylecontext: Do invalidation on first resize container
[~andy/gtk] / gtk / gtkcolorbutton.c
index c9056b5d02023bd53afc62e587e3cd2da40c68e2..52c1ec52516f12f5dc1f973394ccd630c7ebb355 100644 (file)
@@ -241,8 +241,7 @@ gtk_color_button_class_init (GtkColorButtonClass *klass)
    * @widget: the object which received the signal.
    *
    * The ::color-set signal is emitted when the user selects a color.
-   * When handling this signal, use gtk_color_button_get_color() and
-   * gtk_color_button_get_alpha() (or gtk_color_button_get_rgba()) to
+   * When handling this signal, use gtk_color_button_get_rgba() to
    * find out which color was just selected.
    *
    * Note that this signal is only emitted when the <emphasis>user</emphasis>
@@ -585,36 +584,42 @@ dialog_response (GtkDialog *dialog,
     }
 }
 
+/* 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);
@@ -722,7 +727,7 @@ gtk_color_button_get_alpha (GtkColorButton *button)
 }
 
 /**
- * gtk_color_button_set_rgba:
+ * gtk_color_button_set_rgba: (skip)
  * @button: a #GtkColorButton
  * @rgba: a #GdkRGBA to set the current color with
  *
@@ -748,7 +753,7 @@ gtk_color_button_set_rgba (GtkColorButton *button,
 }
 
 /**
- * gtk_color_button_get_rgba:
+ * gtk_color_button_get_rgba: (skip)
  * @button: a #GtkColorButton
  * @rgba: (out): a #GdkRGBA to fill in with the current color
  *
@@ -963,8 +968,9 @@ gtk_color_button_add_palette (GtkColorChooser *chooser,
 {
   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);
 }