[libgd] GdTaggedEntryTag: Use entry's style context
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgd] GdTaggedEntryTag: Use entry's style context
- Date: Fri, 28 Aug 2015 16:35:42 +0000 (UTC)
commit 7e0dd4b15ea80673f62249ac092763b10fc226ad
Author: Benjamin Otte <otte redhat com>
Date: Thu Aug 27 23:55:29 2015 +0200
GdTaggedEntryTag: Use entry's style context
Reuse the entry's style context via save()/restore() instead of creating
a new style context all the time.
Solves a bunch of styling problems, such as value inheritance.
libgd/gd-tagged-entry.c | 28 +++++++++++++---------------
1 files changed, 13 insertions(+), 15 deletions(-)
---
diff --git a/libgd/gd-tagged-entry.c b/libgd/gd-tagged-entry.c
index 82baed4..35c481d 100644
--- a/libgd/gd-tagged-entry.c
+++ b/libgd/gd-tagged-entry.c
@@ -95,7 +95,7 @@ gd_tagged_entry_tag_get_margin (GdTaggedEntryTag *tag,
context = gd_tagged_entry_tag_get_context (tag, entry);
gtk_style_context_get_margin (context, 0, margin);
- g_object_unref (context);
+ gtk_style_context_restore (context);
}
static void
@@ -238,19 +238,17 @@ gd_tagged_entry_tag_get_context (GdTaggedEntryTag *tag,
GdTaggedEntry *entry)
{
GtkWidget *widget = GTK_WIDGET (entry);
- GtkWidgetPath *path;
- gint pos;
GtkStyleContext *retval;
+ GList *l, *list;
- retval = gtk_style_context_new ();
- path = gtk_widget_path_copy (gtk_widget_get_path (widget));
-
- pos = gtk_widget_path_append_type (path, GD_TYPE_TAGGED_ENTRY);
- gtk_widget_path_iter_add_class (path, pos, tag->priv->style);
+ retval = gtk_widget_get_style_context (widget);
+ gtk_style_context_save (retval);
- gtk_style_context_set_path (retval, path);
-
- gtk_widget_path_unref (path);
+ list = gtk_style_context_list_classes (retval);
+ for (l = list; l; l = l->next)
+ gtk_style_context_remove_class (retval, l->data);
+ g_list_free (list);
+ gtk_style_context_add_class (retval, tag->priv->style);
return retval;
}
@@ -278,7 +276,7 @@ gd_tagged_entry_tag_get_width (GdTaggedEntryTag *tag,
gd_tagged_entry_tag_ensure_close_surface (tag, context);
- g_object_unref (context);
+ gtk_style_context_restore (context);
button_width = 0;
if (entry->priv->button_visible && tag->priv->has_close_button)
@@ -393,7 +391,7 @@ gd_tagged_entry_tag_event_is_button (GdTaggedEntryTag *tag,
context = gd_tagged_entry_tag_get_context (tag, entry);
gd_tagged_entry_tag_get_relative_allocations (tag, entry, context, NULL, NULL, &button_allocation);
- g_object_unref (context);
+ gtk_style_context_restore (context);
/* see if the event falls into the button allocation */
if ((event_x >= button_allocation.x &&
@@ -497,9 +495,9 @@ gd_tagged_entry_tag_draw (GdTaggedEntryTag *tag,
button_allocation.x, button_allocation.y);
done:
- cairo_restore (cr);
+ gtk_style_context_restore (context);
- g_object_unref (context);
+ cairo_restore (cr);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]