summaryrefslogtreecommitdiff
path: root/gtk/gtkspinner.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkspinner.c')
-rw-r--r--gtk/gtkspinner.c200
1 files changed, 71 insertions, 129 deletions
diff --git a/gtk/gtkspinner.c b/gtk/gtkspinner.c
index af96fe9d50..802689dd2a 100644
--- a/gtk/gtkspinner.c
+++ b/gtk/gtkspinner.c
@@ -364,20 +364,22 @@ gtk_spinner_dispose (GObject *gobject)
}
static void
-gtk_spinner_set_active (GtkSpinner *spinner, gboolean active)
+gtk_spinner_set_active (GtkSpinner *spinner,
+ gboolean active)
{
- GtkSpinnerPrivate *priv;
-
- active = active != FALSE;
+ GtkSpinnerPrivate *priv = spinner->priv;
- priv = GTK_SPINNER (spinner)->priv;
+ active = !!active;
if (priv->active != active)
{
priv->active = active;
+
g_object_notify (G_OBJECT (spinner), "active");
- if (active && gtk_widget_get_realized (GTK_WIDGET (spinner)) && priv->timeout == 0)
+ if (active &&
+ gtk_widget_get_realized (GTK_WIDGET (spinner)) &&
+ priv->timeout == 0)
{
gtk_spinner_add_timeout (spinner);
}
@@ -388,84 +390,7 @@ gtk_spinner_set_active (GtkSpinner *spinner, gboolean active)
}
}
-static GType
-gtk_spinner_accessible_factory_get_accessible_type (void)
-{
- return gtk_spinner_accessible_get_type ();
-}
-
-static AtkObject *
-gtk_spinner_accessible_new (GObject *obj)
-{
- AtkObject *accessible;
-
- g_return_val_if_fail (GTK_IS_WIDGET (obj), NULL);
-
- accessible = g_object_new (gtk_spinner_accessible_get_type (), NULL);
- atk_object_initialize (accessible, obj);
-
- return accessible;
-}
-
-static AtkObject*
-gtk_spinner_accessible_factory_create_accessible (GObject *obj)
-{
- return gtk_spinner_accessible_new (obj);
-}
-
-static void
-gtk_spinner_accessible_factory_class_init (AtkObjectFactoryClass *klass)
-{
- klass->create_accessible = gtk_spinner_accessible_factory_create_accessible;
- klass->get_accessible_type = gtk_spinner_accessible_factory_get_accessible_type;
-}
-
-static GType
-gtk_spinner_accessible_factory_get_type (void)
-{
- static GType type = 0;
-
- if (!type)
- {
- const GTypeInfo tinfo =
- {
- sizeof (AtkObjectFactoryClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) gtk_spinner_accessible_factory_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (AtkObjectFactory),
- 0, /* n_preallocs */
- NULL, NULL
- };
-
- type = g_type_register_static (ATK_TYPE_OBJECT_FACTORY,
- I_("GtkSpinnerAccessibleFactory"),
- &tinfo, 0);
- }
- return type;
-}
-
-static AtkObjectClass *a11y_parent_class = NULL;
-
-static void
-gtk_spinner_accessible_initialize (AtkObject *accessible,
- gpointer widget)
-{
- atk_object_set_name (accessible, C_("throbbing progress animation widget", "Spinner"));
- atk_object_set_description (accessible, _("Provides visual indication of progress"));
-
- a11y_parent_class->initialize (accessible, widget);
-}
-
-static void
-gtk_spinner_accessible_class_init (AtkObjectClass *klass)
-{
- a11y_parent_class = g_type_class_peek_parent (klass);
-
- klass->initialize = gtk_spinner_accessible_initialize;
-}
+/* accessible implementation */
static void
gtk_spinner_accessible_image_get_size (AtkImage *image,
@@ -476,7 +401,7 @@ gtk_spinner_accessible_image_get_size (AtkImage *image,
GtkWidget *widget;
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (image));
- if (!widget)
+ if (widget == NULL)
{
*width = *height = 0;
}
@@ -489,62 +414,79 @@ gtk_spinner_accessible_image_get_size (AtkImage *image,
}
static void
-gtk_spinner_accessible_image_interface_init (AtkImageIface *iface)
+gtk_spinner_accessible_image_iface_init (AtkImageIface *iface)
{
iface->get_image_size = gtk_spinner_accessible_image_get_size;
}
-static GType
-gtk_spinner_accessible_get_type (void)
+/* dummy typedef */
+typedef struct _GtkSpinnerAccessible GtkSpinnerAccessible;
+typedef struct _GtkSpinnerAccessibleClass GtkSpinnerAccessibleClass;
+
+ATK_DEFINE_TYPE_WITH_CODE (GtkSpinnerAccessible,
+ gtk_spinner_accessible,
+ GTK_TYPE_IMAGE,
+ G_IMPLEMENT_INTERFACE (ATK_TYPE_IMAGE,
+ gtk_spinner_accessible_image_iface_init));
+
+static void
+gtk_spinner_accessible_initialize (AtkObject *accessible,
+ gpointer widget)
{
- static GType type = 0;
+ ATK_OBJECT_CLASS (gtk_spinner_accessible_parent_class)->initialize (accessible, widget);
- /* Action interface
- Name etc. ... */
- if (G_UNLIKELY (type == 0))
- {
- const GInterfaceInfo atk_image_info = {
- (GInterfaceInitFunc) gtk_spinner_accessible_image_interface_init,
- (GInterfaceFinalizeFunc) NULL,
- NULL
- };
- GType parent_atk_type;
- GTypeInfo tinfo = { 0 };
- GTypeQuery query;
- AtkObjectFactory *factory;
+ atk_object_set_name (accessible, C_("throbbing progress animation widget", "Spinner"));
+ atk_object_set_description (accessible, _("Provides visual indication of progress"));
+}
- if ((type = g_type_from_name ("GtkSpinnerAccessible")))
- return type;
+static void
+gtk_spinner_accessible_class_init (GtkSpinnerAccessibleClass *klass)
+{
+ AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
- factory = atk_registry_get_factory (atk_get_default_registry (),
- GTK_TYPE_IMAGE);
- if (!factory)
- return G_TYPE_INVALID;
+ atk_class->initialize = gtk_spinner_accessible_initialize;
+}
- parent_atk_type = atk_object_factory_get_accessible_type (factory);
- if (!parent_atk_type)
- return G_TYPE_INVALID;
+static void
+gtk_spinner_accessible_init (GtkSpinnerAccessible *self)
+{
+}
- /*
- * Figure out the size of the class and instance
- * we are deriving from
- */
- g_type_query (parent_atk_type, &query);
+/* factory */
+typedef AtkObjectFactory GtkSpinnerAccessibleFactory;
+typedef AtkObjectFactoryClass GtkSpinnerAccessibleFactoryClass;
- tinfo.class_init = (GClassInitFunc) gtk_spinner_accessible_class_init;
- tinfo.class_size = query.class_size;
- tinfo.instance_size = query.instance_size;
+G_DEFINE_TYPE (GtkSpinnerAccessibleFactory,
+ gtk_spinner_accessible_factory,
+ ATK_TYPE_OBJECT_FACTORY);
- /* Register the type */
- type = g_type_register_static (parent_atk_type,
- "GtkSpinnerAccessible",
- &tinfo, 0);
+static GType
+gtk_spinner_accessible_factory_get_accessible_type (void)
+{
+ return gtk_spinner_accessible_get_type ();
+}
- g_type_add_interface_static (type, ATK_TYPE_IMAGE,
- &atk_image_info);
- }
+static AtkObject *
+gtk_spinner_accessible_factory_create_accessible (GObject *obj)
+{
+ AtkObject *accessible;
+
+ accessible = g_object_new (gtk_spinner_accessible_get_type (), NULL);
+ atk_object_initialize (accessible, obj);
+
+ return accessible;
+}
+
+static void
+gtk_spinner_accessible_factory_class_init (AtkObjectFactoryClass *klass)
+{
+ klass->create_accessible = gtk_spinner_accessible_factory_create_accessible;
+ klass->get_accessible_type = gtk_spinner_accessible_factory_get_accessible_type;
+}
- return type;
+static void
+gtk_spinner_accessible_factory_init (AtkObjectFactory *factory)
+{
}
static AtkObject *
@@ -567,8 +509,7 @@ gtk_spinner_get_accessible (GtkWidget *widget)
derived_type = g_type_parent (GTK_TYPE_SPINNER);
registry = atk_get_default_registry ();
- factory = atk_registry_get_factory (registry,
- derived_type);
+ factory = atk_registry_get_factory (registry, derived_type);
derived_atk_type = atk_object_factory_get_accessible_type (factory);
if (g_type_is_a (derived_atk_type, GTK_TYPE_ACCESSIBLE))
atk_registry_set_factory_type (registry,
@@ -576,6 +517,7 @@ gtk_spinner_get_accessible (GtkWidget *widget)
gtk_spinner_accessible_factory_get_type ());
first_time = FALSE;
}
+
return GTK_WIDGET_CLASS (gtk_spinner_parent_class)->get_accessible (widget);
}