/* GAIL - The GNOME Accessibility Implementation Library * Copyright 2001 Sun Microsystems Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 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. */ #include "config.h" #undef GTK_DISABLE_DEPRECATED #include #include "gailclistcell.h" static void gail_clist_cell_class_init (GailCListCellClass *klass); static void gail_clist_cell_init (GailCListCell *cell); static const gchar* gail_clist_cell_get_name (AtkObject *accessible); G_DEFINE_TYPE (GailCListCell, gail_clist_cell, GAIL_TYPE_CELL) static void gail_clist_cell_class_init (GailCListCellClass *klass) { AtkObjectClass *class = ATK_OBJECT_CLASS (klass); class->get_name = gail_clist_cell_get_name; } static void gail_clist_cell_init (GailCListCell *cell) { } AtkObject* gail_clist_cell_new (void) { GObject *object; AtkObject *atk_object; object = g_object_new (GAIL_TYPE_CLIST_CELL, NULL); g_return_val_if_fail (object != NULL, NULL); atk_object = ATK_OBJECT (object); atk_object->role = ATK_ROLE_TABLE_CELL; g_return_val_if_fail (!ATK_IS_TEXT (atk_object), NULL); return atk_object; } static const gchar* gail_clist_cell_get_name (AtkObject *accessible) { if (accessible->name) return accessible->name; else { /* * Get the cell's text if it exists */ GailCell *cell = GAIL_CELL (accessible); GtkWidget* widget = cell->widget; GtkCellType cell_type; GtkCList *clist; gchar *text = NULL; gint row, column; if (widget == NULL) /* * State is defunct */ return NULL; clist = GTK_CLIST (widget); g_return_val_if_fail (clist->columns, NULL); row = cell->index / clist->columns; column = cell->index % clist->columns; cell_type = gtk_clist_get_cell_type (clist, row, column); switch (cell_type) { case GTK_CELL_TEXT: gtk_clist_get_text (clist, row, column, &text); break; case GTK_CELL_PIXTEXT: gtk_clist_get_pixtext (clist, row, column, &text, NULL, NULL, NULL); break; default: break; } return text; } }