[gtk+/wip/colorchooser-v2: 17/40] Show new color chooser from color button
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/colorchooser-v2: 17/40] Show new color chooser from color button
- Date: Tue, 7 Feb 2012 17:45:54 +0000 (UTC)
commit 7af441b4c74bd19e94d7f5649545d54b1a9f67bd
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Feb 1 01:51:42 2012 -0500
Show new color chooser from color button
gtk/gtkcolorbutton.c | 99 ++++++++++++++++++--------------------------------
1 files changed, 35 insertions(+), 64 deletions(-)
---
diff --git a/gtk/gtkcolorbutton.c b/gtk/gtkcolorbutton.c
index bee1bec..1955afd 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));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]