summaryrefslogtreecommitdiff
path: root/gtk/gtkcolorbutton.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2012-02-01 01:51:42 -0500
committerMatthias Clasen <mclasen@redhat.com>2012-02-14 16:36:52 -0500
commitd3b30bff0c7242c7442804d389e4b17e6947bb66 (patch)
tree0656afaab4b0a2f25b9d945c964dfcba30af8c94 /gtk/gtkcolorbutton.c
parent2a8d3f78e92b3f6d3f70f67927a4d03e2905cb1d (diff)
downloadgtk+-d3b30bff0c7242c7442804d389e4b17e6947bb66.tar.gz
Show new color chooser from color button
Diffstat (limited to 'gtk/gtkcolorbutton.c')
-rw-r--r--gtk/gtkcolorbutton.c99
1 files changed, 35 insertions, 64 deletions
diff --git a/gtk/gtkcolorbutton.c b/gtk/gtkcolorbutton.c
index bee1bec58a..1955afd661 100644
--- a/gtk/gtkcolorbutton.c
+++ b/gtk/gtkcolorbutton.c
@@ -35,8 +35,8 @@
#include "gtkbutton.h"
#include "gtkmain.h"
#include "gtkalignment.h"
-#include "gtkcolorsel.h"
-#include "gtkcolorseldialog.h"
+#include "gtkcolorchooser.h"
+#include "gtkcolorchooserdialog.h"
#include "gtkdnd.h"
#include "gtkdrawingarea.h"
#include "gtkframe.h"
@@ -582,32 +582,6 @@ gtk_color_button_new_with_rgba (const GdkRGBA *rgba)
return g_object_new (GTK_TYPE_COLOR_BUTTON, "rgba", rgba, NULL);
}
-static void
-dialog_ok_clicked (GtkWidget *widget,
- gpointer data)
-{
- GtkColorButton *color_button = GTK_COLOR_BUTTON (data);
- GtkColorSelection *color_selection;
- GtkColorSelectionDialog *selection_dialog;
-
- selection_dialog = GTK_COLOR_SELECTION_DIALOG (color_button->priv->cs_dialog);
- color_selection = GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (selection_dialog));
-
- gtk_color_selection_get_current_rgba (color_selection, &color_button->priv->rgba);
-
- gtk_widget_hide (color_button->priv->cs_dialog);
-
- gtk_widget_queue_draw (color_button->priv->draw_area);
-
- g_signal_emit (color_button, color_button_signals[COLOR_SET], 0);
-
- g_object_freeze_notify (G_OBJECT (color_button));
- g_object_notify (G_OBJECT (color_button), "color");
- g_object_notify (G_OBJECT (color_button), "alpha");
- g_object_notify (G_OBJECT (color_button), "rgba");
- g_object_thaw_notify (G_OBJECT (color_button));
-}
-
static gboolean
dialog_destroy (GtkWidget *widget,
gpointer data)
@@ -620,69 +594,66 @@ dialog_destroy (GtkWidget *widget,
}
static void
-dialog_cancel_clicked (GtkWidget *widget,
- gpointer data)
+dialog_response (GtkDialog *dialog,
+ gint response,
+ gpointer data)
{
- GtkColorButton *color_button = GTK_COLOR_BUTTON (data);
+ if (response == GTK_RESPONSE_CANCEL)
+ gtk_widget_hide (GTK_WIDGET (dialog));
+ else if (response == GTK_RESPONSE_OK)
+ {
+ GtkColorButton *color_button = GTK_COLOR_BUTTON (data);
+
+ gtk_color_chooser_get_color (GTK_COLOR_CHOOSER (dialog),
+ &color_button->priv->rgba);
+
+ gtk_widget_hide (GTK_WIDGET (dialog));
+
+ gtk_widget_queue_draw (color_button->priv->draw_area);
- gtk_widget_hide (color_button->priv->cs_dialog);
+ g_signal_emit (color_button, color_button_signals[COLOR_SET], 0);
+
+ g_object_freeze_notify (G_OBJECT (color_button));
+ g_object_notify (G_OBJECT (color_button), "color");
+ g_object_notify (G_OBJECT (color_button), "alpha");
+ g_object_notify (G_OBJECT (color_button), "rgba");
+ g_object_thaw_notify (G_OBJECT (color_button));
+ }
}
static void
gtk_color_button_clicked (GtkButton *button)
{
GtkColorButton *color_button = GTK_COLOR_BUTTON (button);
- GtkColorSelection *color_selection;
- GtkColorSelectionDialog *color_dialog;
+ GtkWidget *dialog;
/* if dialog already exists, make sure it's shown and raised */
if (!color_button->priv->cs_dialog)
{
/* Create the dialog and connects its buttons */
GtkWidget *parent;
- GtkWidget *ok_button, *cancel_button;
parent = gtk_widget_get_toplevel (GTK_WIDGET (color_button));
- color_button->priv->cs_dialog = gtk_color_selection_dialog_new (color_button->priv->title);
-
- color_dialog = GTK_COLOR_SELECTION_DIALOG (color_button->priv->cs_dialog);
+ color_button->priv->cs_dialog = dialog = gtk_color_chooser_dialog_new (color_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 (color_dialog)))
- gtk_window_set_transient_for (GTK_WINDOW (color_dialog), GTK_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 (color_dialog),
+ gtk_window_set_modal (GTK_WINDOW (dialog),
gtk_window_get_modal (GTK_WINDOW (parent)));
}
- g_object_get (color_dialog,
- "ok-button", &ok_button,
- "cancel-button", &cancel_button,
- NULL);
-
- g_signal_connect (ok_button, "clicked",
- G_CALLBACK (dialog_ok_clicked), color_button);
- g_signal_connect (cancel_button, "clicked",
- G_CALLBACK (dialog_cancel_clicked), color_button);
- g_signal_connect (color_dialog, "destroy",
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (dialog_response), color_button);
+ g_signal_connect (dialog, "destroy",
G_CALLBACK (dialog_destroy), color_button);
-
- g_object_unref (ok_button);
- g_object_unref (cancel_button);
}
- color_dialog = GTK_COLOR_SELECTION_DIALOG (color_button->priv->cs_dialog);
- color_selection = GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (color_dialog));
-
- gtk_color_selection_set_has_opacity_control (color_selection,
- color_button->priv->use_alpha);
-
- gtk_color_selection_set_previous_rgba (color_selection,
- &color_button->priv->rgba);
- gtk_color_selection_set_current_rgba (color_selection,
- &color_button->priv->rgba);
+ gtk_color_chooser_set_show_alpha (GTK_COLOR_CHOOSER (color_button->priv->cs_dialog),
+ color_button->priv->use_alpha);
gtk_window_present (GTK_WINDOW (color_button->priv->cs_dialog));
}