[gthumb] [GthImportDestinationButton] use the default color when insensitive
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] [GthImportDestinationButton] use the default color when insensitive
- Date: Sat, 7 Aug 2010 14:25:59 +0000 (UTC)
commit 5b4f3f8f6de140988634c67f7f366f0f2036b574
Author: Paolo Bacchilega <paobac src gnome org>
Date: Fri Aug 6 12:45:36 2010 +0200
[GthImportDestinationButton] use the default color when insensitive
.../importer/gth-import-destination-button.c | 83 ++++++++++++++++----
1 files changed, 66 insertions(+), 17 deletions(-)
---
diff --git a/extensions/importer/gth-import-destination-button.c b/extensions/importer/gth-import-destination-button.c
index 433e29d..e426655 100644
--- a/extensions/importer/gth-import-destination-button.c
+++ b/extensions/importer/gth-import-destination-button.c
@@ -36,36 +36,86 @@ struct _GthImportDestinationButtonPrivate {
static void
-gth_import_destination_button_finalize (GObject *object)
+_update_subfolder_label_color (GthImportDestinationButton *self)
{
- GthImportDestinationButton *self;
+ if (! gtk_widget_get_realized (GTK_WIDGET (self)))
+ return;
+
+ if ((gtk_widget_get_state (self->priv->subfolder_label) & GTK_STATE_INSENSITIVE) == GTK_STATE_INSENSITIVE) {
+ gtk_label_set_attributes (GTK_LABEL (self->priv->subfolder_label), NULL);
+ gtk_widget_queue_resize (self->priv->subfolder_label);
+ }
+ else {
+ PangoAttrList *attr_list;
+ PangoAttribute *attr;
+
+ attr_list = pango_attr_list_new ();
+ attr = pango_attr_foreground_new (45489, 13107, 1799);
+ pango_attr_list_insert (attr_list, attr);
+ gtk_label_set_attributes (GTK_LABEL (self->priv->subfolder_label), attr_list);
+ pango_attr_list_unref (attr_list);
+
+ /* FIXME: the color is NULL for some themes.
+ GdkColor *color;
+
+ color = NULL;
+ gtk_widget_style_get (GTK_WIDGET (self), "link-color", &color, NULL);
+ if (color != NULL) {
+ PangoAttrList *attr_list;
+ PangoAttribute *attr;
+
+ g_print ("(%" G_GUINT16_FORMAT ", %" G_GUINT16_FORMAT ", %" G_GUINT16_FORMAT ")\n", color->red, color->green, color->blue);
+
+ attr_list = pango_attr_list_new ();
+ attr = pango_attr_foreground_new (color->red, color->green, color->blue);
+ pango_attr_list_insert (attr_list, attr);
+ gtk_label_set_attributes (GTK_LABEL (self->priv->subfolder_label), attr_list);
+ pango_attr_list_unref (attr_list);
+
+ gdk_color_free (color);
+ }
+ else
+ g_print ("no color\n");
+ */
+ }
+}
- self = GTH_IMPORT_DESTINATION_BUTTON (object);
- G_OBJECT_CLASS (parent_class)->finalize (object);
+static void
+gth_import_destination_button_realize (GtkWidget *widget)
+{
+ GTK_WIDGET_CLASS (parent_class)->realize (widget);
+ _update_subfolder_label_color (GTH_IMPORT_DESTINATION_BUTTON (widget));
}
static void
gth_import_destination_button_class_init (GthImportDestinationButtonClass *klass)
{
- GObjectClass *object_class;
+ GtkWidgetClass *widget_class;
parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (GthImportDestinationButtonPrivate));
- object_class = (GObjectClass*) klass;
- object_class->finalize = gth_import_destination_button_finalize;
+ widget_class = (GtkWidgetClass*) klass;
+ widget_class->realize = gth_import_destination_button_realize;
+}
+
+
+static void
+subfolder_label_state_changed_cb (GtkWidget *widget,
+ GtkStateType state,
+ gpointer user_data)
+{
+ _update_subfolder_label_color (GTH_IMPORT_DESTINATION_BUTTON (user_data));
}
static void
gth_import_destination_button_init (GthImportDestinationButton *self)
{
- GtkWidget *box;
- GtkWidget *label_box;
- PangoAttrList *attr_list;
- PangoAttribute *attr;
+ GtkWidget *box;
+ GtkWidget *label_box;
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GTH_TYPE_IMPORT_DESTINATION_BUTTON, GthImportDestinationButtonPrivate);
@@ -89,14 +139,13 @@ gth_import_destination_button_init (GthImportDestinationButton *self)
gtk_label_set_ellipsize (GTK_LABEL (self->priv->subfolder_label), PANGO_ELLIPSIZE_END);
gtk_misc_set_alignment (GTK_MISC (self->priv->subfolder_label), 0.0, 0.5);
- attr_list = pango_attr_list_new ();
- attr = pango_attr_foreground_new (45489, 13107, 1799);
- pango_attr_list_insert (attr_list, attr);
- g_object_set (self->priv->subfolder_label, "attributes", attr_list, NULL);
- pango_attr_list_unref (attr_list);
-
gtk_widget_show (self->priv->subfolder_label);
gtk_box_pack_start (GTK_BOX (label_box), self->priv->subfolder_label, TRUE, TRUE, 0);
+
+ g_signal_connect (self->priv->subfolder_label,
+ "state-changed",
+ G_CALLBACK (subfolder_label_state_changed_cb),
+ self);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]