]> Pileus Git - ~andy/gtk/blobdiff - gtk/a11y/gtkrenderercellaccessible.c
Plug a few memory leaks
[~andy/gtk] / gtk / a11y / gtkrenderercellaccessible.c
index c38856d11f3ce47a8f814ccffb9e9b95373e3cee..d8fdc596284af985dbf0464377a9d1b07ab4923f 100644 (file)
@@ -1,4 +1,4 @@
-/* GAIL - The GNOME Accessibility Enabling Library
+/* GTK+ - accessibility implementations
  * Copyright 2001 Sun Microsystems Inc.
  *
  * This library is free software; you can redistribute it and/or
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "config.h"
 
 #include <gtk/gtk.h>
 #include "gtkrenderercellaccessible.h"
+#include "gtkintl.h"
 
+struct _GtkRendererCellAccessiblePrivate
+{
+  GtkCellRenderer *renderer;
+};
+
+enum {
+  PROP_0,
+  PROP_RENDERER
+};
 
-G_DEFINE_TYPE (GtkRendererCellAccessible, _gtk_renderer_cell_accessible, GTK_TYPE_CELL_ACCESSIBLE)
+G_DEFINE_TYPE (GtkRendererCellAccessible, gtk_renderer_cell_accessible, GTK_TYPE_CELL_ACCESSIBLE)
 
+static void
+gtk_renderer_cell_accessible_set_property (GObject         *object,
+                                           guint            prop_id,
+                                           const GValue    *value,
+                                           GParamSpec      *pspec)
+{
+  GtkRendererCellAccessible *accessible = GTK_RENDERER_CELL_ACCESSIBLE (object);
+
+  switch (prop_id)
+    {
+    case PROP_RENDERER:
+      accessible->priv->renderer = g_value_dup_object (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+gtk_renderer_cell_accessible_get_property (GObject         *object,
+                                           guint            prop_id,
+                                           GValue          *value,
+                                           GParamSpec      *pspec)
+{
+  GtkRendererCellAccessible *accessible = GTK_RENDERER_CELL_ACCESSIBLE (object);
+
+  switch (prop_id)
+    {
+    case PROP_RENDERER:
+      g_value_set_object (value, accessible->priv->renderer);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
 
 static void
 gtk_renderer_cell_accessible_finalize (GObject *object)
 {
   GtkRendererCellAccessible *renderer_cell = GTK_RENDERER_CELL_ACCESSIBLE (object);
 
-  if (renderer_cell->renderer)
-    g_object_unref (renderer_cell->renderer);
+  if (renderer_cell->priv->renderer)
+    g_object_unref (renderer_cell->priv->renderer);
 
-  G_OBJECT_CLASS (_gtk_renderer_cell_accessible_parent_class)->finalize (object);
+  G_OBJECT_CLASS (gtk_renderer_cell_accessible_parent_class)->finalize (object);
 }
 
 static void
-_gtk_renderer_cell_accessible_class_init (GtkRendererCellAccessibleClass *klass)
+gtk_renderer_cell_accessible_class_init (GtkRendererCellAccessibleClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
-  klass->property_list = NULL;
-
+  gobject_class->get_property = gtk_renderer_cell_accessible_get_property;
+  gobject_class->set_property = gtk_renderer_cell_accessible_set_property;
   gobject_class->finalize = gtk_renderer_cell_accessible_finalize;
-}
 
-static void
-_gtk_renderer_cell_accessible_init (GtkRendererCellAccessible *renderer_cell)
-{
-  renderer_cell->renderer = NULL;
+  g_object_class_install_property (gobject_class,
+                                  PROP_RENDERER,
+                                  g_param_spec_object ("renderer",
+                                                       P_("Cell renderer"),
+                                                       P_("The cell renderer represented by this accessible"),
+                                                       GTK_TYPE_CELL_RENDERER,
+                                                       G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+  g_type_class_add_private (klass, sizeof (GtkRendererCellAccessiblePrivate));
 }
 
-gboolean
-_gtk_renderer_cell_accessible_update_cache (GtkRendererCellAccessible *cell,
-                                            gboolean                   emit_change_signal)
+static void
+gtk_renderer_cell_accessible_init (GtkRendererCellAccessible *renderer_cell)
 {
-  GtkRendererCellAccessibleClass *class = GTK_RENDERER_CELL_ACCESSIBLE_GET_CLASS (cell);
-
-  if (class->update_cache)
-    return (class->update_cache) (cell, emit_change_signal);
-
-  return FALSE;
+  renderer_cell->priv = G_TYPE_INSTANCE_GET_PRIVATE (renderer_cell,
+                                                     GTK_TYPE_RENDERER_CELL_ACCESSIBLE,
+                                                     GtkRendererCellAccessiblePrivate);
 }
 
 AtkObject *
-_gtk_renderer_cell_accessible_new (void)
+gtk_renderer_cell_accessible_new (GtkCellRenderer *renderer)
 {
-  GObject *object;
-  AtkObject *atk_object;
+  AtkObject *object;
+
+  g_return_val_if_fail (GTK_IS_CELL_RENDERER (renderer), NULL);
 
-  object = g_object_new (GTK_TYPE_RENDERER_CELL_ACCESSIBLE, NULL);
+  object = g_object_new (_gtk_cell_renderer_get_accessible_type (renderer),
+                         "renderer", renderer,
+                         NULL);
 
-  atk_object = ATK_OBJECT (object);
-  atk_object->role = ATK_ROLE_TABLE_CELL;
+  atk_object_set_role (object, ATK_ROLE_TABLE_CELL);
 
-  return atk_object;
+  return object;
 }