summaryrefslogtreecommitdiff
path: root/gtk/gtkentrybuffer.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2015-09-05 22:34:51 -0400
committerMatthias Clasen <mclasen@redhat.com>2015-09-06 17:11:35 -0400
commite83ccecfabf918d253d98f0a2907400bc420cc65 (patch)
tree07e11674a174e41ce8a8d9890b899ea45e2ff6af /gtk/gtkentrybuffer.c
parentdbd5513276fab6c7d19b7b0bb51441d7c7ff0ef7 (diff)
downloadgtk+-e83ccecfabf918d253d98f0a2907400bc420cc65.tar.gz
entry buffer: Convert to g_object_notify_by_pspec
This avoids pspec lookup overhead in g_object_notify.
Diffstat (limited to 'gtk/gtkentrybuffer.c')
-rw-r--r--gtk/gtkentrybuffer.c54
1 files changed, 28 insertions, 26 deletions
diff --git a/gtk/gtkentrybuffer.c b/gtk/gtkentrybuffer.c
index 3c188a52aa..4594a43082 100644
--- a/gtk/gtkentrybuffer.c
+++ b/gtk/gtkentrybuffer.c
@@ -55,8 +55,11 @@ enum {
PROP_TEXT,
PROP_LENGTH,
PROP_MAX_LENGTH,
+ NUM_PROPERTIES
};
+static GParamSpec *entry_buffer_props[NUM_PROPERTIES] = { NULL, };
+
enum {
INSERTED_TEXT,
DELETED_TEXT,
@@ -223,8 +226,8 @@ gtk_entry_buffer_real_inserted_text (GtkEntryBuffer *buffer,
const gchar *chars,
guint n_chars)
{
- g_object_notify (G_OBJECT (buffer), "text");
- g_object_notify (G_OBJECT (buffer), "length");
+ g_object_notify_by_pspec (G_OBJECT (buffer), entry_buffer_props[PROP_TEXT]);
+ g_object_notify_by_pspec (G_OBJECT (buffer), entry_buffer_props[PROP_LENGTH]);
}
static void
@@ -232,8 +235,8 @@ gtk_entry_buffer_real_deleted_text (GtkEntryBuffer *buffer,
guint position,
guint n_chars)
{
- g_object_notify (G_OBJECT (buffer), "text");
- g_object_notify (G_OBJECT (buffer), "length");
+ g_object_notify_by_pspec (G_OBJECT (buffer), entry_buffer_props[PROP_TEXT]);
+ g_object_notify_by_pspec (G_OBJECT (buffer), entry_buffer_props[PROP_LENGTH]);
}
/* --------------------------------------------------------------------------------
@@ -342,13 +345,12 @@ gtk_entry_buffer_class_init (GtkEntryBufferClass *klass)
*
* Since: 2.18
*/
- g_object_class_install_property (gobject_class,
- PROP_TEXT,
- g_param_spec_string ("text",
- P_("Text"),
- P_("The contents of the buffer"),
- "",
- GTK_PARAM_READWRITE));
+ entry_buffer_props[PROP_TEXT] =
+ g_param_spec_string ("text",
+ P_("Text"),
+ P_("The contents of the buffer"),
+ "",
+ GTK_PARAM_READWRITE);
/**
* GtkEntryBuffer:length:
@@ -357,13 +359,12 @@ gtk_entry_buffer_class_init (GtkEntryBufferClass *klass)
*
* Since: 2.18
*/
- g_object_class_install_property (gobject_class,
- PROP_LENGTH,
- g_param_spec_uint ("length",
- P_("Text length"),
- P_("Length of the text currently in the buffer"),
- 0, GTK_ENTRY_BUFFER_MAX_SIZE, 0,
- GTK_PARAM_READABLE));
+ entry_buffer_props[PROP_LENGTH] =
+ g_param_spec_uint ("length",
+ P_("Text length"),
+ P_("Length of the text currently in the buffer"),
+ 0, GTK_ENTRY_BUFFER_MAX_SIZE, 0,
+ GTK_PARAM_READABLE);
/**
* GtkEntryBuffer:max-length:
@@ -372,13 +373,14 @@ gtk_entry_buffer_class_init (GtkEntryBufferClass *klass)
*
* Since: 2.18
*/
- g_object_class_install_property (gobject_class,
- PROP_MAX_LENGTH,
- g_param_spec_int ("max-length",
- P_("Maximum length"),
- P_("Maximum number of characters for this entry. Zero if no maximum"),
- 0, GTK_ENTRY_BUFFER_MAX_SIZE, 0,
- GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
+ entry_buffer_props[PROP_MAX_LENGTH] =
+ g_param_spec_int ("max-length",
+ P_("Maximum length"),
+ P_("Maximum number of characters for this entry. Zero if no maximum"),
+ 0, GTK_ENTRY_BUFFER_MAX_SIZE, 0,
+ GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
+
+ g_object_class_install_properties (gobject_class, NUM_PROPERTIES, entry_buffer_props);
/**
* GtkEntryBuffer::inserted-text:
@@ -585,7 +587,7 @@ gtk_entry_buffer_set_max_length (GtkEntryBuffer *buffer,
gtk_entry_buffer_delete_text (buffer, max_length, -1);
buffer->priv->max_length = max_length;
- g_object_notify (G_OBJECT (buffer), "max-length");
+ g_object_notify_by_pspec (G_OBJECT (buffer), entry_buffer_props[PROP_MAX_LENGTH]);
}
/**