[gtk+] stylecontext: Avoid style_context_save() calls
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] stylecontext: Avoid style_context_save() calls
- Date: Tue, 17 Apr 2012 07:22:34 +0000 (UTC)
commit 35e36b9fe506143f722a00f26a86143f9c95b740
Author: Benjamin Otte <otte redhat com>
Date: Wed Apr 11 16:36:48 2012 +0200
stylecontext: Avoid style_context_save() calls
Introduce style_data_lookup_for_state() that does this.
gtk/gtkstylecontext.c | 32 ++++++++++++++++++++------------
1 files changed, 20 insertions(+), 12 deletions(-)
---
diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c
index 2d5015f..cf79e11 100644
--- a/gtk/gtkstylecontext.c
+++ b/gtk/gtkstylecontext.c
@@ -994,6 +994,23 @@ style_data_lookup (GtkStyleContext *context)
return data;
}
+static StyleData *
+style_data_lookup_for_state (GtkStyleContext *context,
+ GtkStateFlags state)
+{
+ StyleData *data;
+
+ if (context->priv->info->state_flags == state)
+ return style_data_lookup (context);
+
+ gtk_style_context_save (context);
+ gtk_style_context_set_state (context, state);
+ data = style_data_lookup (context);
+ gtk_style_context_restore (context);
+
+ return data;
+}
+
static void
gtk_style_context_set_invalid (GtkStyleContext *context,
gboolean invalid)
@@ -1338,11 +1355,8 @@ gtk_style_context_get_property (GtkStyleContext *context,
return;
}
- gtk_style_context_save (context);
- gtk_style_context_set_state (context, state);
- data = style_data_lookup (context);
+ data = style_data_lookup_for_state (context, state);
_gtk_style_property_query (prop, value, gtk_style_context_query_func, data->store);
- gtk_style_context_restore (context);
}
/**
@@ -2195,10 +2209,7 @@ _gtk_style_context_peek_style_property (GtkStyleContext *context,
priv = context->priv;
- gtk_style_context_save (context);
- gtk_style_context_set_state (context, state);
- data = style_data_lookup (context);
- gtk_style_context_restore (context);
+ data = style_data_lookup_for_state (context, state);
key.widget_type = widget_type;
key.state = state;
@@ -3421,10 +3432,7 @@ gtk_style_context_get_font (GtkStyleContext *context,
priv = context->priv;
g_return_val_if_fail (priv->widget != NULL || priv->widget_path != NULL, NULL);
- gtk_style_context_save (context);
- gtk_style_context_set_state (context, state);
- data = style_data_lookup (context);
- gtk_style_context_restore (context);
+ data = style_data_lookup_for_state (context, state);
/* Yuck, fonts are created on-demand but we don't return a ref.
* Do bad things to achieve this requirement */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]