-/* GAIL - The GNOME Accessibility Implementation Library
+/* GTK+ - accessibility implementations
* Copyright 2001, 2002, 2003 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 "gtknotebookpageaccessible.h"
+struct _GtkNotebookPageAccessiblePrivate
+{
+ GtkAccessible *notebook;
+ GtkWidget *child;
+};
+
static void atk_component_interface_init (AtkComponentIface *iface);
-G_DEFINE_TYPE_WITH_CODE (GtkNotebookPageAccessible, _gtk_notebook_page_accessible, ATK_TYPE_OBJECT,
+G_DEFINE_TYPE_WITH_CODE (GtkNotebookPageAccessible, gtk_notebook_page_accessible, ATK_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (ATK_TYPE_COMPONENT, atk_component_interface_init))
GtkWidget *child;
GtkNotebook *notebook;
- notebook = GTK_NOTEBOOK (gtk_accessible_get_widget (page->notebook));
+ notebook = GTK_NOTEBOOK (gtk_accessible_get_widget (page->priv->notebook));
if (!notebook)
return NULL;
if (!gtk_notebook_get_show_tabs (notebook))
return NULL;
- child = gtk_notebook_get_tab_label (notebook, page->child);
+ child = gtk_notebook_get_tab_label (notebook, page->priv->child);
if (GTK_IS_LABEL (child))
return child;
page = GTK_NOTEBOOK_PAGE_ACCESSIBLE (accessible);
- return ATK_OBJECT (page->notebook);
+ return ATK_OBJECT (page->priv->notebook);
}
static gint
return NULL;
page = GTK_NOTEBOOK_PAGE_ACCESSIBLE (accessible);
- if (!page->child)
+ if (!page->priv->child)
return NULL;
- child_obj = gtk_widget_get_accessible (page->child);
+ child_obj = gtk_widget_get_accessible (page->priv->child);
g_object_ref (child_obj);
return child_obj;
static AtkStateSet *
gtk_notebook_page_accessible_ref_state_set (AtkObject *accessible)
{
+ GtkNotebookPageAccessible *page = GTK_NOTEBOOK_PAGE_ACCESSIBLE (accessible);
AtkStateSet *state_set, *label_state_set, *merged_state_set;
AtkObject *atk_label;
GtkWidget *label;
+ AtkObject *selected;
- state_set = ATK_OBJECT_CLASS (_gtk_notebook_page_accessible_parent_class)->ref_state_set (accessible);
+ state_set = ATK_OBJECT_CLASS (gtk_notebook_page_accessible_parent_class)->ref_state_set (accessible);
+
+ atk_state_set_add_state (state_set, ATK_STATE_SELECTABLE);
+
+ selected = atk_selection_ref_selection (ATK_SELECTION (page->priv->notebook), 0);
+ if (selected == accessible)
+ atk_state_set_add_state (state_set, ATK_STATE_SELECTED);
+ g_object_unref (selected);
label = get_label_from_notebook_page (GTK_NOTEBOOK_PAGE_ACCESSIBLE (accessible));
if (label)
GtkNotebookPageAccessible *page;
page = GTK_NOTEBOOK_PAGE_ACCESSIBLE (accessible);
- if (!page->child)
+ if (!page->priv->child)
return -1;
- return gtk_notebook_page_num (GTK_NOTEBOOK (gtk_accessible_get_widget (page->notebook)),
- page->child);
+ return gtk_notebook_page_num (GTK_NOTEBOOK (gtk_accessible_get_widget (page->priv->notebook)),
+ page->priv->child);
}
static void
-_gtk_notebook_page_accessible_class_init (GtkNotebookPageAccessibleClass *klass)
+gtk_notebook_page_accessible_class_init (GtkNotebookPageAccessibleClass *klass)
{
AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
class->ref_child = gtk_notebook_page_accessible_ref_child;
class->ref_state_set = gtk_notebook_page_accessible_ref_state_set;
class->get_index_in_parent = gtk_notebook_page_accessible_get_index_in_parent;
+
+ g_type_class_add_private (klass, sizeof (GtkNotebookPageAccessiblePrivate));
}
static void
-_gtk_notebook_page_accessible_init (GtkNotebookPageAccessible *page)
+gtk_notebook_page_accessible_init (GtkNotebookPageAccessible *page)
{
+ page->priv = G_TYPE_INSTANCE_GET_PRIVATE (page,
+ GTK_TYPE_NOTEBOOK_PAGE_ACCESSIBLE,
+ GtkNotebookPageAccessiblePrivate);
}
static void
}
AtkObject *
-_gtk_notebook_page_accessible_new (GtkNotebookAccessible *notebook,
- GtkWidget *child)
+gtk_notebook_page_accessible_new (GtkNotebookAccessible *notebook,
+ GtkWidget *child)
{
GObject *object;
AtkObject *atk_object;
object = g_object_new (GTK_TYPE_NOTEBOOK_PAGE_ACCESSIBLE, NULL);
page = GTK_NOTEBOOK_PAGE_ACCESSIBLE (object);
- page->notebook = GTK_ACCESSIBLE (notebook);
- page->child = child;
+ page->priv->notebook = GTK_ACCESSIBLE (notebook);
+ page->priv->child = child;
atk_object = ATK_OBJECT (page);
atk_object->role = ATK_ROLE_PAGE_TAB;
atk_object_set_parent (gtk_widget_get_accessible (child), atk_object);
- g_signal_connect (gtk_accessible_get_widget (page->notebook),
+ g_signal_connect (gtk_accessible_get_widget (page->priv->notebook),
"child-notify::tab-label",
G_CALLBACK (notify_tab_label), page);
}
void
-_gtk_notebook_page_accessible_invalidate (GtkNotebookPageAccessible *page)
+gtk_notebook_page_accessible_invalidate (GtkNotebookPageAccessible *page)
{
AtkObject *obj = ATK_OBJECT (page);
GtkWidget *notebook;
- notebook = gtk_accessible_get_widget (page->notebook);
+ notebook = gtk_accessible_get_widget (page->priv->notebook);
if (notebook)
g_signal_handlers_disconnect_by_func (notebook, notify_tab_label, page);
atk_object_notify_state_change (obj, ATK_STATE_DEFUNCT, TRUE);
atk_object_set_parent (obj, NULL);
- page->notebook = NULL;
- atk_object_set_parent (gtk_widget_get_accessible (page->child), NULL);
- page->child = NULL;
+ page->priv->notebook = NULL;
+ atk_object_set_parent (gtk_widget_get_accessible (page->priv->child), NULL);
+ page->priv->child = NULL;
}
static AtkObject*