gtk+ r20482 - trunk/gtk
- From: timj svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk+ r20482 - trunk/gtk
- Date: Fri, 20 Jun 2008 10:57:09 +0000 (UTC)
Author: timj
Date: Fri Jun 20 10:57:08 2008
New Revision: 20482
URL: http://svn.gnome.org/viewvc/gtk+?rev=20482&view=rev
Log:
Sealed GtkAccelGroup and added
* gtk/gtkaccelgroup.[ch]: Added GObject properties for lock_count,
modifier_mask, acceleratables, n_accels and priv_accels. Added seal
macro for public struct members which should be private.
Modified:
trunk/gtk/gtkaccelgroup.c
trunk/gtk/gtkaccelgroup.h
Modified: trunk/gtk/gtkaccelgroup.c
==============================================================================
--- trunk/gtk/gtkaccelgroup.c (original)
+++ trunk/gtk/gtkaccelgroup.c Fri Jun 20 10:57:08 2008
@@ -39,9 +39,13 @@
/* --- prototypes --- */
-static void gtk_accel_group_finalize (GObject *object);
-static void accel_closure_invalidate (gpointer data,
- GClosure *closure);
+static void gtk_accel_group_finalize (GObject *object);
+static void gtk_accel_group_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void accel_closure_invalidate (gpointer data,
+ GClosure *closure);
/* --- variables --- */
@@ -56,6 +60,15 @@
GDK_META_MASK);
+enum {
+ PROP_0,
+ PROP_LOCK_COUNT,
+ PROP_MODIFIER_MASK,
+ PROP_ACCELERATABLES,
+ PROP_N_ACCELS,
+ PROP_PRIV_ACCELS
+};
+
G_DEFINE_TYPE (GtkAccelGroup, gtk_accel_group, G_TYPE_OBJECT)
/* --- functions --- */
@@ -67,9 +80,50 @@
quark_acceleratable_groups = g_quark_from_static_string ("gtk-acceleratable-accel-groups");
object_class->finalize = gtk_accel_group_finalize;
+ object_class->get_property = gtk_accel_group_get_property;
class->accel_changed = NULL;
+ g_object_class_install_property (object_class,
+ PROP_LOCK_COUNT,
+ g_param_spec_uint ("lock-count",
+ "Lock Count",
+ "Total locks on this accel group",
+ 0,
+ G_MAXUINT,
+ 0,
+ G_PARAM_READABLE));
+ g_object_class_install_property (object_class,
+ PROP_MODIFIER_MASK,
+ g_param_spec_enum ("modifier-mask",
+ "Modifier Mask",
+ "Modifier Mask",
+ gdk_modifier_type_get_type (),
+ 0,
+ G_PARAM_READABLE));
+ g_object_class_install_property (object_class,
+ PROP_ACCELERATABLES,
+ g_param_spec_pointer ("acceleratables",
+ "Acceleratables",
+ "Acceleratables",
+ G_PARAM_READABLE));
+ g_object_class_install_property (object_class,
+ PROP_N_ACCELS,
+ g_param_spec_uint ("n-accels",
+ "N Accels",
+ "Number of acceleraters",
+ 0,
+ G_MAXUINT,
+ 0,
+ G_PARAM_READABLE));
+ g_object_class_install_property (object_class,
+ PROP_PRIV_ACCELS,
+ g_param_spec_pointer ("priv-accels",
+ "Priv Accels",
+ "Private Acceleraters",
+ G_PARAM_READABLE));
+
+
/**
* GtkAccelGroup::accel-activate:
* @accel_group: the #GtkAccelGroup which received the signal
@@ -145,6 +199,36 @@
}
static void
+gtk_accel_group_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GtkAccelGroup *accel_group = GTK_ACCEL_GROUP (object);
+
+ switch (param_id) {
+ case PROP_LOCK_COUNT:
+ g_value_set_uint (value, accel_group->lock_count);
+ break;
+ case PROP_MODIFIER_MASK:
+ g_value_set_enum (value, accel_group->modifier_mask);
+ break;
+ case PROP_ACCELERATABLES:
+ g_value_set_pointer (value, accel_group->acceleratables);
+ break;
+ case PROP_N_ACCELS:
+ g_value_set_uint (value, accel_group->n_accels);
+ break;
+ case PROP_PRIV_ACCELS:
+ g_value_set_pointer (value, accel_group->priv_accels);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
gtk_accel_group_init (GtkAccelGroup *accel_group)
{
accel_group->lock_count = 0;
@@ -166,6 +250,46 @@
return g_object_new (GTK_TYPE_ACCEL_GROUP, NULL);
}
+guint
+gtk_accel_group_get_lock_count (GtkAccelGroup *accel_group)
+{
+ g_return_val_if_fail (GTK_IS_ACCEL_GROUP (accel_group), 0);
+
+ return accel_group->lock_count;
+}
+
+GdkModifierType
+gtk_accel_group_get_modifier_mask (GtkAccelGroup *accel_group)
+{
+ g_return_val_if_fail (GTK_IS_ACCEL_GROUP (accel_group), 0);
+
+ return accel_group->modifier_mask;
+}
+
+GSList *
+gtk_accel_group_get_acceleratables (GtkAccelGroup *accel_group)
+{
+ g_return_val_if_fail (GTK_IS_ACCEL_GROUP (accel_group), NULL);
+
+ return accel_group->acceleratables;
+}
+
+guint
+gtk_accel_group_get_n_accels (GtkAccelGroup *accel_group)
+{
+ g_return_val_if_fail (GTK_IS_ACCEL_GROUP (accel_group), 0);
+
+ return accel_group->n_accels;
+}
+
+GtkAccelGroupEntry *
+gtk_accel_group_get_priv_accels (GtkAccelGroup *accel_group)
+{
+ g_return_val_if_fail (GTK_IS_ACCEL_GROUP (accel_group), NULL);
+
+ return accel_group->priv_accels;
+}
+
static void
accel_group_weak_ref_detach (GSList *free_list,
GObject *stale_object)
@@ -179,6 +303,7 @@
accel_group = slist->data;
accel_group->acceleratables = g_slist_remove (accel_group->acceleratables, stale_object);
g_object_unref (accel_group);
+ g_object_notify (G_OBJECT (accel_group), "acceleratables");
}
g_slist_free (free_list);
g_object_set_qdata (stale_object, quark_acceleratable_groups, NULL);
@@ -206,6 +331,7 @@
g_object_weak_ref (object,
(GWeakNotify) accel_group_weak_ref_detach,
slist);
+ g_object_notify (G_OBJECT (accel_group), "acceleratables");
}
void
@@ -229,6 +355,7 @@
g_object_weak_ref (object,
(GWeakNotify) accel_group_weak_ref_detach,
slist);
+ g_object_notify (G_OBJECT (accel_group), "acceleratables");
g_object_unref (accel_group);
}
@@ -304,6 +431,8 @@
g_return_if_fail (GTK_IS_ACCEL_GROUP (accel_group));
accel_group->lock_count += 1;
+
+ g_object_notify (G_OBJECT (accel_group), "lock-count");
}
/**
@@ -319,6 +448,8 @@
g_return_if_fail (accel_group->lock_count > 0);
accel_group->lock_count -= 1;
+
+ g_object_notify (G_OBJECT (accel_group), "lock-count");
}
static void
@@ -371,6 +502,7 @@
accel_group->priv_accels[pos].closure = g_closure_ref (closure);
accel_group->priv_accels[pos].accel_path_quark = path_quark;
g_closure_sink (closure);
+ g_object_notify (G_OBJECT (accel_group), "priv-accels");
/* handle closure invalidation and reverse lookups */
g_closure_add_invalidate_notifier (closure, accel_group, accel_closure_invalidate);
Modified: trunk/gtk/gtkaccelgroup.h
==============================================================================
--- trunk/gtk/gtkaccelgroup.h (original)
+++ trunk/gtk/gtkaccelgroup.h Fri Jun 20 10:57:08 2008
@@ -73,11 +73,11 @@
struct _GtkAccelGroup
{
GObject parent;
- guint lock_count;
- GdkModifierType modifier_mask;
- GSList *acceleratables;
- guint n_accels;
- GtkAccelGroupEntry *priv_accels;
+ guint GSEAL (lock_count);
+ GdkModifierType GSEAL (modifier_mask);
+ GSList *GSEAL (acceleratables);
+ guint GSEAL (n_accels);
+ GtkAccelGroupEntry *GSEAL (priv_accels);
};
struct _GtkAccelGroupClass
@@ -107,6 +107,14 @@
/* -- Accelerator Groups --- */
GType gtk_accel_group_get_type (void) G_GNUC_CONST;
GtkAccelGroup* gtk_accel_group_new (void);
+guint gtk_accel_group_get_lock_count (GtkAccelGroup *accel_group);
+GdkModifierType
+ gtk_accel_group_get_modifier_mask (GtkAccelGroup *accel_group);
+GSList* gtk_accel_group_get_acceleratables (GtkAccelGroup *accel_group);
+guint gtk_accel_group_get_n_accels (GtkAccelGroup *accel_group);
+GtkAccelGroupEntry*
+ gtk_accel_group_get_priv_accels (GtkAccelGroup *accel_group);
+
void gtk_accel_group_lock (GtkAccelGroup *accel_group);
void gtk_accel_group_unlock (GtkAccelGroup *accel_group);
void gtk_accel_group_connect (GtkAccelGroup *accel_group,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]