]> Pileus Git - ~andy/gtk/blob - gtk/a11y/gtkrenderercellaccessible.c
GtkRadioMenuItemAccessible: add a private struct
[~andy/gtk] / gtk / a11y / gtkrenderercellaccessible.c
1 /* GAIL - The GNOME Accessibility Enabling Library
2  * Copyright 2001 Sun Microsystems Inc.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 #include "config.h"
19
20 #include <gtk/gtk.h>
21 #include "gtkrenderercellaccessible.h"
22 #include "gtkintl.h"
23
24
25 enum {
26   PROP_0,
27   PROP_RENDERER
28 };
29
30 G_DEFINE_TYPE (GtkRendererCellAccessible, _gtk_renderer_cell_accessible, GTK_TYPE_CELL_ACCESSIBLE)
31
32 static void
33 gtk_renderer_cell_accessible_set_property (GObject         *object,
34                                            guint            prop_id,
35                                            const GValue    *value,
36                                            GParamSpec      *pspec)
37 {
38   GtkRendererCellAccessible *accessible = GTK_RENDERER_CELL_ACCESSIBLE (object);
39
40   switch (prop_id)
41     {
42     case PROP_RENDERER:
43       accessible->renderer = g_value_dup_object (value);
44       break;
45     default:
46       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
47       break;
48     }
49 }
50
51 static void
52 gtk_renderer_cell_accessible_get_property (GObject         *object,
53                                            guint            prop_id,
54                                            GValue          *value,
55                                            GParamSpec      *pspec)
56 {
57   GtkRendererCellAccessible *accessible = GTK_RENDERER_CELL_ACCESSIBLE (object);
58
59   switch (prop_id)
60     {
61     case PROP_RENDERER:
62       g_value_set_object (value, accessible->renderer);
63       break;
64     default:
65       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
66       break;
67     }
68 }
69
70 static void
71 gtk_renderer_cell_accessible_finalize (GObject *object)
72 {
73   GtkRendererCellAccessible *renderer_cell = GTK_RENDERER_CELL_ACCESSIBLE (object);
74
75   if (renderer_cell->renderer)
76     g_object_unref (renderer_cell->renderer);
77
78   G_OBJECT_CLASS (_gtk_renderer_cell_accessible_parent_class)->finalize (object);
79 }
80
81 static void
82 _gtk_renderer_cell_accessible_class_init (GtkRendererCellAccessibleClass *klass)
83 {
84   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
85
86   gobject_class->get_property = gtk_renderer_cell_accessible_get_property;
87   gobject_class->set_property = gtk_renderer_cell_accessible_set_property;
88   gobject_class->finalize = gtk_renderer_cell_accessible_finalize;
89
90   g_object_class_install_property (gobject_class,
91                                    PROP_RENDERER,
92                                    g_param_spec_object ("renderer",
93                                                         P_("Cell renderer"),
94                                                         P_("The cell renderer represented by this accessible"),
95                                                         GTK_TYPE_CELL_RENDERER,
96                                                         G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
97 }
98
99 static void
100 _gtk_renderer_cell_accessible_init (GtkRendererCellAccessible *renderer_cell)
101 {
102 }
103
104 AtkObject *
105 _gtk_renderer_cell_accessible_new (GtkCellRenderer *renderer)
106 {
107   AtkObject *object;
108
109   g_return_val_if_fail (GTK_IS_CELL_RENDERER (renderer), NULL);
110
111   object = g_object_new (_gtk_cell_renderer_get_accessible_type (renderer),
112                          "renderer", renderer,
113                          NULL);
114
115   atk_object_set_role (object, ATK_ROLE_TABLE_CELL);
116
117   return object;
118 }