diff options
author | Matthias Clasen <mclasen@redhat.com> | 2012-02-01 01:51:42 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2012-02-14 16:36:52 -0500 |
commit | d3b30bff0c7242c7442804d389e4b17e6947bb66 (patch) | |
tree | 0656afaab4b0a2f25b9d945c964dfcba30af8c94 /gtk/gtkcolorbutton.c | |
parent | 2a8d3f78e92b3f6d3f70f67927a4d03e2905cb1d (diff) | |
download | gtk+-d3b30bff0c7242c7442804d389e4b17e6947bb66.tar.gz |
Show new color chooser from color button
Diffstat (limited to 'gtk/gtkcolorbutton.c')
-rw-r--r-- | gtk/gtkcolorbutton.c | 99 |
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)); } |