First cut at GailEntry -> GtkEntryAccessible

Replace the factory for entry and spin button with
gtk_widget_class_set_accessible_type() calls, and move then
to the GtkAccessible namespace.
This commit is contained in:
Matthias Clasen 2011-06-24 22:12:55 -04:00
parent c2d1e3eeb0
commit 918514d51d
9 changed files with 315 additions and 324 deletions

View File

@ -18,7 +18,7 @@ gail_c_sources = \
gailcombobox.c \
gailcontainer.c \
gailcontainercell.c \
gailentry.c \
gtkentryaccessible.c \
gailexpander.c \
gailframe.c \
gailimage.c \
@ -43,7 +43,7 @@ gail_c_sources = \
gailscrollbar.c \
gailscrolledwindow.c \
gailseparator.c \
gailspinbutton.c \
gtkspinbuttonaccessible.c \
gailsubmenuitem.c \
gailstatusbar.c \
gailtextcell.c \
@ -72,7 +72,7 @@ gail_private_h_sources = \
gailcombobox.h \
gailcontainercell.h \
gailcontainer.h \
gailentry.h \
gtkentryaccessible.h \
gailexpander.h \
gailfactory.h \
gailframe.h \
@ -98,7 +98,7 @@ gail_private_h_sources = \
gailscrollbar.h \
gailscrolledwindow.h \
gailseparator.h \
gailspinbutton.h \
gtkspinbuttonaccessible.h \
gailsubmenuitem.h \
gailstatusbar.h \
gailtextcell.h \

View File

@ -34,7 +34,6 @@
#include "gailcombobox.h"
#include "gailcontainer.h"
#include "gailcontainercell.h"
#include "gailentry.h"
#include "gailexpander.h"
#include "gailframe.h"
#include "gailimage.h"
@ -55,7 +54,6 @@
#include "gailscrollbar.h"
#include "gailscrolledwindow.h"
#include "gailseparator.h"
#include "gailspinbutton.h"
#include "gailstatusbar.h"
#include "gailtextcell.h"
#include "gailtextview.h"
@ -121,7 +119,6 @@ GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_TOGGLE_BUTTON, GailToggleButton, gail_toggle_b
GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_IMAGE, GailImage, gail_image, GTK_TYPE_IMAGE)
GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_TEXT_VIEW, GailTextView, gail_text_view, GTK_TYPE_TEXT_VIEW)
GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_COMBO_BOX, GailComboBox, gail_combo_box, GTK_TYPE_COMBO_BOX)
GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_ENTRY, GailEntry, gail_entry, GTK_TYPE_ENTRY)
GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_MENU_SHELL, GailMenuShell, gail_menu_shell, GTK_TYPE_MENU_SHELL)
GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_MENU, GailMenu, gail_menu, GTK_TYPE_MENU)
GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_WINDOW, GailWindow, gail_window, GTK_TYPE_BIN)
@ -132,7 +129,6 @@ GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_STATUSBAR, GailStatusbar, gail_statusbar, GTK_
GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_NOTEBOOK, GailNotebook, gail_notebook, GTK_TYPE_NOTEBOOK)
GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_CALENDAR, GailCalendar, gail_calendar, GTK_TYPE_CALENDAR)
GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_PROGRESS_BAR, GailProgressBar, gail_progress_bar, GTK_TYPE_PROGRESS_BAR)
GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_SPIN_BUTTON, GailSpinButton, gail_spin_button, GTK_TYPE_SPIN_BUTTON)
GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_TREE_VIEW, GailTreeView, gail_tree_view, GTK_TYPE_TREE_VIEW)
GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_FRAME, GailFrame, gail_frame, GTK_TYPE_FRAME)
GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_RADIO_BUTTON, GailRadioButton, gail_radio_button, GTK_TYPE_RADIO_BUTTON)
@ -898,7 +894,6 @@ gail_accessibility_module_init (void)
GAIL_WIDGET_SET_FACTORY (GTK_TYPE_IMAGE, gail_image);
GAIL_WIDGET_SET_FACTORY (GTK_TYPE_TEXT_VIEW, gail_text_view);
GAIL_WIDGET_SET_FACTORY (GTK_TYPE_COMBO_BOX, gail_combo_box);
GAIL_WIDGET_SET_FACTORY (GTK_TYPE_ENTRY, gail_entry);
GAIL_WIDGET_SET_FACTORY (GTK_TYPE_MENU_BAR, gail_menu_shell);
GAIL_WIDGET_SET_FACTORY (GTK_TYPE_MENU, gail_menu);
GAIL_WIDGET_SET_FACTORY (GTK_TYPE_WINDOW, gail_window);
@ -909,7 +904,6 @@ gail_accessibility_module_init (void)
GAIL_WIDGET_SET_FACTORY (GTK_TYPE_NOTEBOOK, gail_notebook);
GAIL_WIDGET_SET_FACTORY (GTK_TYPE_CALENDAR, gail_calendar);
GAIL_WIDGET_SET_FACTORY (GTK_TYPE_PROGRESS_BAR, gail_progress_bar);
GAIL_WIDGET_SET_FACTORY (GTK_TYPE_SPIN_BUTTON, gail_spin_button);
GAIL_WIDGET_SET_FACTORY (GTK_TYPE_TREE_VIEW, gail_tree_view);
GAIL_WIDGET_SET_FACTORY (GTK_TYPE_FRAME, gail_frame);
GAIL_WIDGET_SET_FACTORY (GTK_TYPE_CELL_RENDERER_TEXT, gail_text_cell);

View File

@ -1,53 +0,0 @@
/* 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 Library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library 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.
*/
#ifndef __GAIL_SPIN_BUTTON_H__
#define __GAIL_SPIN_BUTTON_H__
#include "gailentry.h"
G_BEGIN_DECLS
#define GAIL_TYPE_SPIN_BUTTON (gail_spin_button_get_type ())
#define GAIL_SPIN_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GAIL_TYPE_SPIN_BUTTON, GailSpinButton))
#define GAIL_SPIN_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GAIL_TYPE_SPIN_BUTTON, GailSpinButtonClass))
#define GAIL_IS_SPIN_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GAIL_TYPE_SPIN_BUTTON))
#define GAIL_IS_SPIN_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GAIL_TYPE_SPIN_BUTTON))
#define GAIL_SPIN_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GAIL_TYPE_SPIN_BUTTON, GailSpinButtonClass))
typedef struct _GailSpinButton GailSpinButton;
typedef struct _GailSpinButtonClass GailSpinButtonClass;
struct _GailSpinButton
{
GailEntry parent;
AtkObject *adjustment;
};
GType gail_spin_button_get_type (void);
struct _GailSpinButtonClass
{
GailEntryClass parent_class;
};
G_END_DECLS
#endif /* __GAIL_SPIN_BUTTON_H__ */

View File

@ -22,155 +22,155 @@
#include <string.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include "gailentry.h"
#include "gtkentryaccessible.h"
#include "gailcombobox.h"
#include <libgail-util/gailmisc.h>
static void gail_entry_class_init (GailEntryClass *klass);
static void gail_entry_init (GailEntry *entry);
static void gail_entry_real_initialize (AtkObject *obj,
static void gtk_entry_accessible_class_init (GtkEntryAccessibleClass *klass);
static void gtk_entry_accessible_init (GtkEntryAccessible *entry);
static void gtk_entry_accessible_real_initialize (AtkObject *obj,
gpointer data);
static void text_setup (GailEntry *entry,
static void text_setup (GtkEntryAccessible *entry,
GtkEntry *gtk_entry);
static void gail_entry_real_notify_gtk (GObject *obj,
static void gtk_entry_accessible_real_notify_gtk (GObject *obj,
GParamSpec *pspec);
static void gail_entry_finalize (GObject *object);
static void gtk_entry_accessible_finalize (GObject *object);
static gint gail_entry_get_index_in_parent (AtkObject *accessible);
static gint gtk_entry_accessible_get_index_in_parent (AtkObject *accessible);
/* atkobject.h */
static AtkStateSet* gail_entry_ref_state_set (AtkObject *accessible);
static AtkAttributeSet* gail_entry_get_attributes (AtkObject *accessible);
static AtkStateSet* gtk_entry_accessible_ref_state_set (AtkObject *accessible);
static AtkAttributeSet* gtk_entry_accessible_get_attributes (AtkObject *accessible);
/* atktext.h */
static void atk_text_interface_init (AtkTextIface *iface);
static gchar* gail_entry_get_text (AtkText *text,
static gchar* gtk_entry_accessible_get_text (AtkText *text,
gint start_pos,
gint end_pos);
static gunichar gail_entry_get_character_at_offset
static gunichar gtk_entry_accessible_get_character_at_offset
(AtkText *text,
gint offset);
static gchar* gail_entry_get_text_before_offset(AtkText *text,
static gchar* gtk_entry_accessible_get_text_before_offset(AtkText *text,
gint offset,
AtkTextBoundary boundary_type,
gint *start_offset,
gint *end_offset);
static gchar* gail_entry_get_text_at_offset (AtkText *text,
static gchar* gtk_entry_accessible_get_text_at_offset (AtkText *text,
gint offset,
AtkTextBoundary boundary_type,
gint *start_offset,
gint *end_offset);
static gchar* gail_entry_get_text_after_offset (AtkText *text,
static gchar* gtk_entry_accessible_get_text_after_offset (AtkText *text,
gint offset,
AtkTextBoundary boundary_type,
gint *start_offset,
gint *end_offset);
static gint gail_entry_get_caret_offset (AtkText *text);
static gboolean gail_entry_set_caret_offset (AtkText *text,
static gint gtk_entry_accessible_get_caret_offset (AtkText *text);
static gboolean gtk_entry_accessible_set_caret_offset (AtkText *text,
gint offset);
static gint gail_entry_get_n_selections (AtkText *text);
static gchar* gail_entry_get_selection (AtkText *text,
static gint gtk_entry_accessible_get_n_selections (AtkText *text);
static gchar* gtk_entry_accessible_get_selection (AtkText *text,
gint selection_num,
gint *start_offset,
gint *end_offset);
static gboolean gail_entry_add_selection (AtkText *text,
static gboolean gtk_entry_accessible_add_selection (AtkText *text,
gint start_offset,
gint end_offset);
static gboolean gail_entry_remove_selection (AtkText *text,
static gboolean gtk_entry_accessible_remove_selection (AtkText *text,
gint selection_num);
static gboolean gail_entry_set_selection (AtkText *text,
static gboolean gtk_entry_accessible_set_selection (AtkText *text,
gint selection_num,
gint start_offset,
gint end_offset);
static gint gail_entry_get_character_count (AtkText *text);
static AtkAttributeSet * gail_entry_get_run_attributes
static gint gtk_entry_accessible_get_character_count (AtkText *text);
static AtkAttributeSet * gtk_entry_accessible_get_run_attributes
(AtkText *text,
gint offset,
gint *start_offset,
gint *end_offset);
static AtkAttributeSet * gail_entry_get_default_attributes
static AtkAttributeSet * gtk_entry_accessible_get_default_attributes
(AtkText *text);
static void gail_entry_get_character_extents (AtkText *text,
static void gtk_entry_accessible_get_character_extents (AtkText *text,
gint offset,
gint *x,
gint *y,
gint *width,
gint *height,
AtkCoordType coords);
static gint gail_entry_get_offset_at_point (AtkText *text,
static gint gtk_entry_accessible_get_offset_at_point (AtkText *text,
gint x,
gint y,
AtkCoordType coords);
/* atkeditabletext.h */
static void atk_editable_text_interface_init (AtkEditableTextIface *iface);
static void gail_entry_set_text_contents (AtkEditableText *text,
static void gtk_entry_accessible_set_text_contents (AtkEditableText *text,
const gchar *string);
static void gail_entry_insert_text (AtkEditableText *text,
static void gtk_entry_accessible_insert_text (AtkEditableText *text,
const gchar *string,
gint length,
gint *position);
static void gail_entry_copy_text (AtkEditableText *text,
static void gtk_entry_accessible_copy_text (AtkEditableText *text,
gint start_pos,
gint end_pos);
static void gail_entry_cut_text (AtkEditableText *text,
static void gtk_entry_accessible_cut_text (AtkEditableText *text,
gint start_pos,
gint end_pos);
static void gail_entry_delete_text (AtkEditableText *text,
static void gtk_entry_accessible_delete_text (AtkEditableText *text,
gint start_pos,
gint end_pos);
static void gail_entry_paste_text (AtkEditableText *text,
static void gtk_entry_accessible_paste_text (AtkEditableText *text,
gint position);
static void gail_entry_paste_received (GtkClipboard *clipboard,
static void gtk_entry_accessible_paste_received (GtkClipboard *clipboard,
const gchar *text,
gpointer data);
/* Callbacks */
static gboolean gail_entry_idle_notify_insert (gpointer data);
static void gail_entry_notify_insert (GailEntry *entry);
static void gail_entry_notify_delete (GailEntry *entry);
static void _gail_entry_insert_text_cb (GtkEntry *entry,
static gboolean gtk_entry_accessible_idle_notify_insert (gpointer data);
static void gtk_entry_accessible_notify_insert (GtkEntryAccessible *entry);
static void gtk_entry_accessible_notify_delete (GtkEntryAccessible *entry);
static void _gtk_entry_accessible_insert_text_cb (GtkEntry *entry,
gchar *arg1,
gint arg2,
gpointer arg3);
static void _gail_entry_delete_text_cb (GtkEntry *entry,
static void _gtk_entry_accessible_delete_text_cb (GtkEntry *entry,
gint arg1,
gint arg2);
static void _gail_entry_changed_cb (GtkEntry *entry);
static gboolean check_for_selection_change (GailEntry *entry,
static void _gtk_entry_accessible_changed_cb (GtkEntry *entry);
static gboolean check_for_selection_change (GtkEntryAccessible *entry,
GtkEntry *gtk_entry);
static void atk_action_interface_init (AtkActionIface *iface);
static gboolean gail_entry_do_action (AtkAction *action,
static gboolean gtk_entry_accessible_do_action (AtkAction *action,
gint i);
static gboolean idle_do_action (gpointer data);
static gint gail_entry_get_n_actions (AtkAction *action);
static const gchar* gail_entry_get_keybinding (AtkAction *action,
static gint gtk_entry_accessible_get_n_actions (AtkAction *action);
static const gchar* gtk_entry_accessible_get_keybinding (AtkAction *action,
gint i);
static const gchar* gail_entry_action_get_name (AtkAction *action,
static const gchar* gtk_entry_accessible_action_get_name (AtkAction *action,
gint i);
typedef struct _GailEntryPaste GailEntryPaste;
typedef struct _GtkEntryAccessiblePaste GtkEntryAccessiblePaste;
struct _GailEntryPaste
struct _GtkEntryAccessiblePaste
{
GtkEntry* entry;
gint position;
};
G_DEFINE_TYPE_WITH_CODE (GailEntry, gail_entry, GAIL_TYPE_WIDGET,
G_DEFINE_TYPE_WITH_CODE (GtkEntryAccessible, gtk_entry_accessible, GAIL_TYPE_WIDGET,
G_IMPLEMENT_INTERFACE (ATK_TYPE_EDITABLE_TEXT, atk_editable_text_interface_init)
G_IMPLEMENT_INTERFACE (ATK_TYPE_TEXT, atk_text_interface_init)
G_IMPLEMENT_INTERFACE (ATK_TYPE_ACTION, atk_action_interface_init))
static void
gail_entry_class_init (GailEntryClass *klass)
gtk_entry_accessible_class_init (GtkEntryAccessibleClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
@ -178,18 +178,18 @@ gail_entry_class_init (GailEntryClass *klass)
widget_class = (GailWidgetClass*)klass;
gobject_class->finalize = gail_entry_finalize;
gobject_class->finalize = gtk_entry_accessible_finalize;
class->ref_state_set = gail_entry_ref_state_set;
class->get_index_in_parent = gail_entry_get_index_in_parent;
class->initialize = gail_entry_real_initialize;
class->get_attributes = gail_entry_get_attributes;
class->ref_state_set = gtk_entry_accessible_ref_state_set;
class->get_index_in_parent = gtk_entry_accessible_get_index_in_parent;
class->initialize = gtk_entry_accessible_real_initialize;
class->get_attributes = gtk_entry_accessible_get_attributes;
widget_class->notify_gtk = gail_entry_real_notify_gtk;
widget_class->notify_gtk = gtk_entry_accessible_real_notify_gtk;
}
static void
gail_entry_init (GailEntry *entry)
gtk_entry_accessible_init (GtkEntryAccessible *entry)
{
entry->textutil = NULL;
entry->signal_name_insert = NULL;
@ -200,34 +200,34 @@ gail_entry_init (GailEntry *entry)
}
static void
gail_entry_real_initialize (AtkObject *obj,
gtk_entry_accessible_real_initialize (AtkObject *obj,
gpointer data)
{
GtkEntry *entry;
GailEntry *gail_entry;
GtkEntryAccessible *gtk_entry_accessible;
gint start_pos, end_pos;
ATK_OBJECT_CLASS (gail_entry_parent_class)->initialize (obj, data);
ATK_OBJECT_CLASS (gtk_entry_accessible_parent_class)->initialize (obj, data);
gail_entry = GAIL_ENTRY (obj);
gail_entry->textutil = gail_text_util_new ();
gtk_entry_accessible = GTK_ENTRY_ACCESSIBLE (obj);
gtk_entry_accessible->textutil = gail_text_util_new ();
g_assert (GTK_IS_ENTRY (data));
entry = GTK_ENTRY (data);
text_setup (gail_entry, entry);
text_setup (gtk_entry_accessible, entry);
gtk_editable_get_selection_bounds (GTK_EDITABLE (entry),
&start_pos, &end_pos);
gail_entry->cursor_position = end_pos;
gail_entry->selection_bound = start_pos;
gtk_entry_accessible->cursor_position = end_pos;
gtk_entry_accessible->selection_bound = start_pos;
/* Set up signal callbacks */
g_signal_connect (data, "insert-text",
G_CALLBACK (_gail_entry_insert_text_cb), NULL);
G_CALLBACK (_gtk_entry_accessible_insert_text_cb), NULL);
g_signal_connect (data, "delete-text",
G_CALLBACK (_gail_entry_delete_text_cb), NULL);
G_CALLBACK (_gtk_entry_accessible_delete_text_cb), NULL);
g_signal_connect (data, "changed",
G_CALLBACK (_gail_entry_changed_cb), NULL);
G_CALLBACK (_gtk_entry_accessible_changed_cb), NULL);
if (gtk_entry_get_visibility (entry))
obj->role = ATK_ROLE_TEXT;
@ -236,23 +236,23 @@ gail_entry_real_initialize (AtkObject *obj,
}
static void
gail_entry_real_notify_gtk (GObject *obj,
gtk_entry_accessible_real_notify_gtk (GObject *obj,
GParamSpec *pspec)
{
GtkWidget *widget;
AtkObject* atk_obj;
GtkEntry* gtk_entry;
GailEntry* entry;
GtkEntryAccessible* entry;
widget = GTK_WIDGET (obj);
atk_obj = gtk_widget_get_accessible (widget);
gtk_entry = GTK_ENTRY (widget);
entry = GAIL_ENTRY (atk_obj);
entry = GTK_ENTRY_ACCESSIBLE (atk_obj);
if (strcmp (pspec->name, "cursor-position") == 0)
{
if (entry->insert_idle_handler == 0)
entry->insert_idle_handler = gdk_threads_add_idle (gail_entry_idle_notify_insert, entry);
entry->insert_idle_handler = gdk_threads_add_idle (gtk_entry_accessible_idle_notify_insert, entry);
if (check_for_selection_change (entry, gtk_entry))
g_signal_emit_by_name (atk_obj, "text_selection_changed");
@ -265,7 +265,7 @@ gail_entry_real_notify_gtk (GObject *obj,
else if (strcmp (pspec->name, "selection-bound") == 0)
{
if (entry->insert_idle_handler == 0)
entry->insert_idle_handler = gdk_threads_add_idle (gail_entry_idle_notify_insert, entry);
entry->insert_idle_handler = gdk_threads_add_idle (gtk_entry_accessible_idle_notify_insert, entry);
if (check_for_selection_change (entry, gtk_entry))
g_signal_emit_by_name (atk_obj, "text_selection_changed");
@ -301,11 +301,11 @@ gail_entry_real_notify_gtk (GObject *obj,
}
}
else
GAIL_WIDGET_CLASS (gail_entry_parent_class)->notify_gtk (obj, pspec);
GAIL_WIDGET_CLASS (gtk_entry_accessible_parent_class)->notify_gtk (obj, pspec);
}
static void
text_setup (GailEntry *entry,
text_setup (GtkEntryAccessible *entry,
GtkEntry *gtk_entry)
{
if (gtk_entry_get_visibility (gtk_entry))
@ -339,9 +339,9 @@ text_setup (GailEntry *entry,
}
static void
gail_entry_finalize (GObject *object)
gtk_entry_accessible_finalize (GObject *object)
{
GailEntry *entry = GAIL_ENTRY (object);
GtkEntryAccessible *entry = GTK_ENTRY_ACCESSIBLE (object);
g_object_unref (entry->textutil);
g_free (entry->activate_keybinding);
@ -355,11 +355,11 @@ gail_entry_finalize (GObject *object)
g_source_remove (entry->insert_idle_handler);
entry->insert_idle_handler = 0;
}
G_OBJECT_CLASS (gail_entry_parent_class)->finalize (object);
G_OBJECT_CLASS (gtk_entry_accessible_parent_class)->finalize (object);
}
static gint
gail_entry_get_index_in_parent (AtkObject *accessible)
gtk_entry_accessible_get_index_in_parent (AtkObject *accessible)
{
/*
* If the parent widget is a combo box then the index is 1
@ -369,20 +369,20 @@ gail_entry_get_index_in_parent (AtkObject *accessible)
if (GAIL_IS_COMBO_BOX (accessible->accessible_parent))
return 1;
return ATK_OBJECT_CLASS (gail_entry_parent_class)->get_index_in_parent (accessible);
return ATK_OBJECT_CLASS (gtk_entry_accessible_parent_class)->get_index_in_parent (accessible);
}
/* atkobject.h */
static AtkStateSet*
gail_entry_ref_state_set (AtkObject *accessible)
gtk_entry_accessible_ref_state_set (AtkObject *accessible)
{
AtkStateSet *state_set;
GtkEntry *entry;
gboolean value;
GtkWidget *widget;
state_set = ATK_OBJECT_CLASS (gail_entry_parent_class)->ref_state_set (accessible);
state_set = ATK_OBJECT_CLASS (gtk_entry_accessible_parent_class)->ref_state_set (accessible);
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
if (widget == NULL)
@ -399,14 +399,14 @@ gail_entry_ref_state_set (AtkObject *accessible)
}
static AtkAttributeSet *
gail_entry_get_attributes (AtkObject *accessible)
gtk_entry_accessible_get_attributes (AtkObject *accessible)
{
GtkWidget *widget;
AtkAttributeSet *attributes;
AtkAttribute *placeholder_text;
const gchar *text;
attributes = ATK_OBJECT_CLASS (gail_entry_parent_class)->get_attributes (accessible);
attributes = ATK_OBJECT_CLASS (gtk_entry_accessible_parent_class)->get_attributes (accessible);
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
if (widget == NULL)
@ -430,27 +430,27 @@ gail_entry_get_attributes (AtkObject *accessible)
static void
atk_text_interface_init (AtkTextIface *iface)
{
iface->get_text = gail_entry_get_text;
iface->get_character_at_offset = gail_entry_get_character_at_offset;
iface->get_text_before_offset = gail_entry_get_text_before_offset;
iface->get_text_at_offset = gail_entry_get_text_at_offset;
iface->get_text_after_offset = gail_entry_get_text_after_offset;
iface->get_caret_offset = gail_entry_get_caret_offset;
iface->set_caret_offset = gail_entry_set_caret_offset;
iface->get_character_count = gail_entry_get_character_count;
iface->get_n_selections = gail_entry_get_n_selections;
iface->get_selection = gail_entry_get_selection;
iface->add_selection = gail_entry_add_selection;
iface->remove_selection = gail_entry_remove_selection;
iface->set_selection = gail_entry_set_selection;
iface->get_run_attributes = gail_entry_get_run_attributes;
iface->get_default_attributes = gail_entry_get_default_attributes;
iface->get_character_extents = gail_entry_get_character_extents;
iface->get_offset_at_point = gail_entry_get_offset_at_point;
iface->get_text = gtk_entry_accessible_get_text;
iface->get_character_at_offset = gtk_entry_accessible_get_character_at_offset;
iface->get_text_before_offset = gtk_entry_accessible_get_text_before_offset;
iface->get_text_at_offset = gtk_entry_accessible_get_text_at_offset;
iface->get_text_after_offset = gtk_entry_accessible_get_text_after_offset;
iface->get_caret_offset = gtk_entry_accessible_get_caret_offset;
iface->set_caret_offset = gtk_entry_accessible_set_caret_offset;
iface->get_character_count = gtk_entry_accessible_get_character_count;
iface->get_n_selections = gtk_entry_accessible_get_n_selections;
iface->get_selection = gtk_entry_accessible_get_selection;
iface->add_selection = gtk_entry_accessible_add_selection;
iface->remove_selection = gtk_entry_accessible_remove_selection;
iface->set_selection = gtk_entry_accessible_set_selection;
iface->get_run_attributes = gtk_entry_accessible_get_run_attributes;
iface->get_default_attributes = gtk_entry_accessible_get_default_attributes;
iface->get_character_extents = gtk_entry_accessible_get_character_extents;
iface->get_offset_at_point = gtk_entry_accessible_get_offset_at_point;
}
static gchar*
gail_entry_get_text (AtkText *text,
gtk_entry_accessible_get_text (AtkText *text,
gint start_pos,
gint end_pos)
{
@ -461,11 +461,11 @@ gail_entry_get_text (AtkText *text,
/* State is defunct */
return NULL;
return gail_text_util_get_substring (GAIL_ENTRY (text)->textutil, start_pos, end_pos);
return gail_text_util_get_substring (GTK_ENTRY_ACCESSIBLE (text)->textutil, start_pos, end_pos);
}
static gchar*
gail_entry_get_text_before_offset (AtkText *text,
gtk_entry_accessible_get_text_before_offset (AtkText *text,
gint offset,
AtkTextBoundary boundary_type,
gint *start_offset,
@ -482,13 +482,13 @@ gail_entry_get_text_before_offset (AtkText *text,
/* Get Entry */
entry = GTK_ENTRY (widget);
return gail_text_util_get_text (GAIL_ENTRY (text)->textutil,
return gail_text_util_get_text (GTK_ENTRY_ACCESSIBLE (text)->textutil,
gtk_entry_get_layout (entry), GAIL_BEFORE_OFFSET,
boundary_type, offset, start_offset, end_offset);
}
static gchar*
gail_entry_get_text_at_offset (AtkText *text,
gtk_entry_accessible_get_text_at_offset (AtkText *text,
gint offset,
AtkTextBoundary boundary_type,
gint *start_offset,
@ -505,13 +505,13 @@ gail_entry_get_text_at_offset (AtkText *text,
/* Get Entry */
entry = GTK_ENTRY (widget);
return gail_text_util_get_text (GAIL_ENTRY (text)->textutil,
return gail_text_util_get_text (GTK_ENTRY_ACCESSIBLE (text)->textutil,
gtk_entry_get_layout (entry), GAIL_AT_OFFSET,
boundary_type, offset, start_offset, end_offset);
}
static gchar*
gail_entry_get_text_after_offset (AtkText *text,
gtk_entry_accessible_get_text_after_offset (AtkText *text,
gint offset,
AtkTextBoundary boundary_type,
gint *start_offset,
@ -528,13 +528,13 @@ gail_entry_get_text_after_offset (AtkText *text,
/* Get Entry */
entry = GTK_ENTRY (widget);
return gail_text_util_get_text (GAIL_ENTRY (text)->textutil,
return gail_text_util_get_text (GTK_ENTRY_ACCESSIBLE (text)->textutil,
gtk_entry_get_layout (entry), GAIL_AFTER_OFFSET,
boundary_type, offset, start_offset, end_offset);
}
static gint
gail_entry_get_character_count (AtkText *text)
gtk_entry_accessible_get_character_count (AtkText *text)
{
GtkEntry *entry;
GtkWidget *widget;
@ -549,7 +549,7 @@ gail_entry_get_character_count (AtkText *text)
}
static gint
gail_entry_get_caret_offset (AtkText *text)
gtk_entry_accessible_get_caret_offset (AtkText *text)
{
GtkEntry *entry;
GtkWidget *widget;
@ -565,7 +565,7 @@ gail_entry_get_caret_offset (AtkText *text)
}
static gboolean
gail_entry_set_caret_offset (AtkText *text, gint offset)
gtk_entry_accessible_set_caret_offset (AtkText *text, gint offset)
{
GtkEntry *entry;
GtkWidget *widget;
@ -582,7 +582,7 @@ gail_entry_set_caret_offset (AtkText *text, gint offset)
}
static AtkAttributeSet*
gail_entry_get_run_attributes (AtkText *text,
gtk_entry_accessible_get_run_attributes (AtkText *text,
gint offset,
gint *start_offset,
gint *end_offset)
@ -617,7 +617,7 @@ gail_entry_get_run_attributes (AtkText *text,
}
static AtkAttributeSet*
gail_entry_get_default_attributes (AtkText *text)
gtk_entry_accessible_get_default_attributes (AtkText *text)
{
GtkWidget *widget;
GtkEntry *entry;
@ -637,7 +637,7 @@ gail_entry_get_default_attributes (AtkText *text)
}
static void
gail_entry_get_character_extents (AtkText *text,
gtk_entry_accessible_get_character_extents (AtkText *text,
gint offset,
gint *x,
gint *y,
@ -678,7 +678,7 @@ gail_entry_get_character_extents (AtkText *text,
}
static gint
gail_entry_get_offset_at_point (AtkText *text,
gtk_entry_accessible_get_offset_at_point (AtkText *text,
gint x,
gint y,
AtkCoordType coords)
@ -728,7 +728,7 @@ gail_entry_get_offset_at_point (AtkText *text,
}
static gint
gail_entry_get_n_selections (AtkText *text)
gtk_entry_accessible_get_n_selections (AtkText *text)
{
GtkEntry *entry;
GtkWidget *widget;
@ -751,7 +751,7 @@ gail_entry_get_n_selections (AtkText *text)
}
static gchar*
gail_entry_get_selection (AtkText *text,
gtk_entry_accessible_get_selection (AtkText *text,
gint selection_num,
gint *start_pos,
gint *end_pos)
@ -780,7 +780,7 @@ gail_entry_get_selection (AtkText *text,
}
static gboolean
gail_entry_add_selection (AtkText *text,
gtk_entry_accessible_add_selection (AtkText *text,
gint start_pos,
gint end_pos)
{
@ -811,7 +811,7 @@ gail_entry_add_selection (AtkText *text,
}
static gboolean
gail_entry_remove_selection (AtkText *text,
gtk_entry_accessible_remove_selection (AtkText *text,
gint selection_num)
{
GtkEntry *entry;
@ -844,7 +844,7 @@ gail_entry_remove_selection (AtkText *text,
}
static gboolean
gail_entry_set_selection (AtkText *text,
gtk_entry_accessible_set_selection (AtkText *text,
gint selection_num,
gint start_pos,
gint end_pos)
@ -881,17 +881,17 @@ gail_entry_set_selection (AtkText *text,
static void
atk_editable_text_interface_init (AtkEditableTextIface *iface)
{
iface->set_text_contents = gail_entry_set_text_contents;
iface->insert_text = gail_entry_insert_text;
iface->copy_text = gail_entry_copy_text;
iface->cut_text = gail_entry_cut_text;
iface->delete_text = gail_entry_delete_text;
iface->paste_text = gail_entry_paste_text;
iface->set_text_contents = gtk_entry_accessible_set_text_contents;
iface->insert_text = gtk_entry_accessible_insert_text;
iface->copy_text = gtk_entry_accessible_copy_text;
iface->cut_text = gtk_entry_accessible_cut_text;
iface->delete_text = gtk_entry_accessible_delete_text;
iface->paste_text = gtk_entry_accessible_paste_text;
iface->set_run_attributes = NULL;
}
static void
gail_entry_set_text_contents (AtkEditableText *text,
gtk_entry_accessible_set_text_contents (AtkEditableText *text,
const gchar *string)
{
GtkEntry *entry;
@ -912,7 +912,7 @@ gail_entry_set_text_contents (AtkEditableText *text,
}
static void
gail_entry_insert_text (AtkEditableText *text,
gtk_entry_accessible_insert_text (AtkEditableText *text,
const gchar *string,
gint length,
gint *position)
@ -936,7 +936,7 @@ gail_entry_insert_text (AtkEditableText *text,
}
static void
gail_entry_copy_text (AtkEditableText *text,
gtk_entry_accessible_copy_text (AtkEditableText *text,
gint start_pos,
gint end_pos)
{
@ -960,7 +960,7 @@ gail_entry_copy_text (AtkEditableText *text,
}
static void
gail_entry_cut_text (AtkEditableText *text,
gtk_entry_accessible_cut_text (AtkEditableText *text,
gint start_pos,
gint end_pos)
{
@ -987,7 +987,7 @@ gail_entry_cut_text (AtkEditableText *text,
}
static void
gail_entry_delete_text (AtkEditableText *text,
gtk_entry_accessible_delete_text (AtkEditableText *text,
gint start_pos,
gint end_pos)
{
@ -1009,12 +1009,12 @@ gail_entry_delete_text (AtkEditableText *text,
}
static void
gail_entry_paste_text (AtkEditableText *text,
gtk_entry_accessible_paste_text (AtkEditableText *text,
gint position)
{
GtkWidget *widget;
GtkEditable *editable;
GailEntryPaste paste_struct;
GtkEntryAccessiblePaste paste_struct;
GtkClipboard *clipboard;
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
@ -1032,15 +1032,15 @@ gail_entry_paste_text (AtkEditableText *text,
clipboard = gtk_clipboard_get_for_display (gtk_widget_get_display (widget),
GDK_SELECTION_CLIPBOARD);
gtk_clipboard_request_text (clipboard,
gail_entry_paste_received, &paste_struct);
gtk_entry_accessible_paste_received, &paste_struct);
}
static void
gail_entry_paste_received (GtkClipboard *clipboard,
gtk_entry_accessible_paste_received (GtkClipboard *clipboard,
const gchar *text,
gpointer data)
{
GailEntryPaste* paste_struct = (GailEntryPaste *)data;
GtkEntryAccessiblePaste* paste_struct = (GtkEntryAccessiblePaste *)data;
if (text)
gtk_editable_insert_text (GTK_EDITABLE (paste_struct->entry), text, -1,
@ -1052,19 +1052,19 @@ gail_entry_paste_received (GtkClipboard *clipboard,
/* Callbacks */
static gboolean
gail_entry_idle_notify_insert (gpointer data)
gtk_entry_accessible_idle_notify_insert (gpointer data)
{
GailEntry *entry;
GtkEntryAccessible *entry;
entry = GAIL_ENTRY (data);
entry = GTK_ENTRY_ACCESSIBLE (data);
entry->insert_idle_handler = 0;
gail_entry_notify_insert (entry);
gtk_entry_accessible_notify_insert (entry);
return FALSE;
}
static void
gail_entry_notify_insert (GailEntry *entry)
gtk_entry_accessible_notify_insert (GtkEntryAccessible *entry)
{
GtkWidget *widget;
@ -1086,40 +1086,40 @@ gail_entry_notify_insert (GailEntry *entry)
* arg2 returns the number of characters inserted.
*/
static void
_gail_entry_insert_text_cb (GtkEntry *entry,
_gtk_entry_accessible_insert_text_cb (GtkEntry *entry,
gchar *arg1,
gint arg2,
gpointer arg3)
{
AtkObject *accessible;
GailEntry *gail_entry;
GtkEntryAccessible *entry_accessible;
gint *position = (gint *) arg3;
if (arg2 == 0)
return;
accessible = gtk_widget_get_accessible (GTK_WIDGET (entry));
gail_entry = GAIL_ENTRY (accessible);
if (!gail_entry->signal_name_insert)
entry_accessible = GTK_ENTRY_ACCESSIBLE (accessible);
if (!entry_accessible->signal_name_insert)
{
gail_entry->signal_name_insert = "text_changed::insert";
gail_entry->position_insert = *position;
gail_entry->length_insert = g_utf8_strlen(arg1, arg2);
entry_accessible->signal_name_insert = "text_changed::insert";
entry_accessible->position_insert = *position;
entry_accessible->length_insert = g_utf8_strlen(arg1, arg2);
}
/*
* The signal will be emitted when the cursor position is updated.
* or in an idle handler if it not updated.
*/
if (gail_entry->insert_idle_handler == 0)
gail_entry->insert_idle_handler = gdk_threads_add_idle (gail_entry_idle_notify_insert, gail_entry);
if (entry_accessible->insert_idle_handler == 0)
entry_accessible->insert_idle_handler = gdk_threads_add_idle (gtk_entry_accessible_idle_notify_insert, entry_accessible);
}
static gunichar
gail_entry_get_character_at_offset (AtkText *text,
gtk_entry_accessible_get_character_at_offset (AtkText *text,
gint offset)
{
GtkWidget *widget;
GailEntry *entry;
GtkEntryAccessible *entry;
gchar *string;
gchar *index;
gunichar unichar;
@ -1129,7 +1129,7 @@ gail_entry_get_character_at_offset (AtkText *text,
/* State is defunct */
return '\0';
entry = GAIL_ENTRY (text);
entry = GTK_ENTRY_ACCESSIBLE (text);
string = gail_text_util_get_substring (entry->textutil, 0, -1);
if (offset >= g_utf8_strlen (string, -1))
{
@ -1147,7 +1147,7 @@ gail_entry_get_character_at_offset (AtkText *text,
}
static void
gail_entry_notify_delete (GailEntry *entry)
gtk_entry_accessible_notify_delete (GtkEntryAccessible *entry)
{
if (entry->signal_name_delete)
{
@ -1163,12 +1163,12 @@ gail_entry_notify_delete (GailEntry *entry)
* end of the delete range if multiple characters are deleted.
*/
static void
_gail_entry_delete_text_cb (GtkEntry *entry,
_gtk_entry_accessible_delete_text_cb (GtkEntry *entry,
gint arg1,
gint arg2)
{
AtkObject *accessible;
GailEntry *gail_entry;
GtkEntryAccessible *entry_accessible;
/*
* Zero length text deleted so ignore
@ -1177,31 +1177,31 @@ _gail_entry_delete_text_cb (GtkEntry *entry,
return;
accessible = gtk_widget_get_accessible (GTK_WIDGET (entry));
gail_entry = GAIL_ENTRY (accessible);
if (!gail_entry->signal_name_delete)
entry_accessible = GTK_ENTRY_ACCESSIBLE (accessible);
if (!entry_accessible->signal_name_delete)
{
gail_entry->signal_name_delete = "text_changed::delete";
gail_entry->position_delete = arg1;
gail_entry->length_delete = arg2 - arg1;
entry_accessible->signal_name_delete = "text_changed::delete";
entry_accessible->position_delete = arg1;
entry_accessible->length_delete = arg2 - arg1;
}
gail_entry_notify_delete (gail_entry);
gtk_entry_accessible_notify_delete (entry_accessible);
}
static void
_gail_entry_changed_cb (GtkEntry *entry)
_gtk_entry_accessible_changed_cb (GtkEntry *entry)
{
AtkObject *accessible;
GailEntry *gail_entry;
GtkEntryAccessible *gtk_entry_accessible;
accessible = gtk_widget_get_accessible (GTK_WIDGET (entry));
gail_entry = GAIL_ENTRY (accessible);
gtk_entry_accessible = GTK_ENTRY_ACCESSIBLE (accessible);
text_setup (gail_entry, entry);
text_setup (gtk_entry_accessible, entry);
}
static gboolean
check_for_selection_change (GailEntry *entry,
check_for_selection_change (GtkEntryAccessible *entry,
GtkEntry *gtk_entry)
{
gboolean selected, ret_val = FALSE;
@ -1236,21 +1236,21 @@ check_for_selection_change (GailEntry *entry,
static void
atk_action_interface_init (AtkActionIface *iface)
{
iface->do_action = gail_entry_do_action;
iface->get_n_actions = gail_entry_get_n_actions;
iface->get_keybinding = gail_entry_get_keybinding;
iface->get_name = gail_entry_action_get_name;
iface->do_action = gtk_entry_accessible_do_action;
iface->get_n_actions = gtk_entry_accessible_get_n_actions;
iface->get_keybinding = gtk_entry_accessible_get_keybinding;
iface->get_name = gtk_entry_accessible_action_get_name;
}
static gboolean
gail_entry_do_action (AtkAction *action,
gtk_entry_accessible_do_action (AtkAction *action,
gint i)
{
GailEntry *entry;
GtkEntryAccessible *entry;
GtkWidget *widget;
gboolean return_value = TRUE;
entry = GAIL_ENTRY (action);
entry = GTK_ENTRY_ACCESSIBLE (action);
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (action));
if (widget == NULL)
/*
@ -1279,10 +1279,10 @@ gail_entry_do_action (AtkAction *action,
static gboolean
idle_do_action (gpointer data)
{
GailEntry *entry;
GtkEntryAccessible *entry;
GtkWidget *widget;
entry = GAIL_ENTRY (data);
entry = GTK_ENTRY_ACCESSIBLE (data);
entry->action_idle_handler = 0;
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (entry));
if (widget == NULL /* State is defunct */ ||
@ -1295,19 +1295,19 @@ idle_do_action (gpointer data)
}
static gint
gail_entry_get_n_actions (AtkAction *action)
gtk_entry_accessible_get_n_actions (AtkAction *action)
{
return 1;
}
static const gchar*
gail_entry_get_keybinding (AtkAction *action,
gtk_entry_accessible_get_keybinding (AtkAction *action,
gint i)
{
GailEntry *entry;
GtkEntryAccessible *entry;
gchar *return_value = NULL;
entry = GAIL_ENTRY (action);
entry = GTK_ENTRY_ACCESSIBLE (action);
switch (i)
{
case 0:
@ -1323,7 +1323,7 @@ gail_entry_get_keybinding (AtkAction *action,
gpointer target_object;
guint key_val;
entry = GAIL_ENTRY (action);
entry = GTK_ENTRY_ACCESSIBLE (action);
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (entry));
if (widget == NULL)
/*
@ -1365,7 +1365,7 @@ gail_entry_get_keybinding (AtkAction *action,
}
static const gchar*
gail_entry_action_get_name (AtkAction *action,
gtk_entry_accessible_action_get_name (AtkAction *action,
gint i)
{
const gchar *return_value;

View File

@ -17,25 +17,25 @@
* Boston, MA 02111-1307, USA.
*/
#ifndef __GAIL_ENTRY_H__
#define __GAIL_ENTRY_H__
#ifndef __GTK_ENTRY_ACCESSIBLE_H__
#define __GTK_ENTRY_ACCESSIBLE_H__
#include "gailwidget.h"
#include "gailtextutil.h"
G_BEGIN_DECLS
#define GAIL_TYPE_ENTRY (gail_entry_get_type ())
#define GAIL_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GAIL_TYPE_ENTRY, GailEntry))
#define GAIL_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GAIL_TYPE_ENTRY, GailEntryClass))
#define GAIL_IS_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GAIL_TYPE_ENTRY))
#define GAIL_IS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GAIL_TYPE_ENTRY))
#define GAIL_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GAIL_TYPE_ENTRY, GailEntryClass))
#define GTK_TYPE_ENTRY_ACCESSIBLE (gtk_entry_accessible_get_type ())
#define GTK_ENTRY_ACCESSIBLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ENTRY_ACCESSIBLE, GtkEntryAccessible))
#define GTK_ENTRY_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_ENTRY_ACCESSIBLE, GtkEntryAccessibleClass))
#define GTK_IS_ENTRY_ACCESSIBLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_ENTRY_ACCESSIBLE))
#define GTK_IS_ENTRY_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_ENTRY_ACCESSIBLE))
#define GTK_ENTRY_ACCESSIBLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ENTRY_ACCESSIBLE, GtkEntryAccessibleClass))
typedef struct _GailEntry GailEntry;
typedef struct _GailEntryClass GailEntryClass;
typedef struct _GtkEntryAccessible GtkEntryAccessible;
typedef struct _GtkEntryAccessibleClass GtkEntryAccessibleClass;
struct _GailEntry
struct _GtkEntryAccessible
{
GailWidget parent;
@ -57,13 +57,13 @@ struct _GailEntry
guint insert_idle_handler;
};
GType gail_entry_get_type (void);
GType gtk_entry_accessible_get_type (void);
struct _GailEntryClass
struct _GtkEntryAccessibleClass
{
GailWidgetClass parent_class;
};
G_END_DECLS
#endif /* __GAIL_ENTRY_H__ */
#endif /* __GTK_ENTRY_ACCESSIBLE_H__ */

View File

@ -21,39 +21,38 @@
#include <string.h>
#include <gtk/gtk.h>
#include "gailspinbutton.h"
#include "gtkspinbuttonaccessible.h"
#include "gailadjustment.h"
#include "gail-private-macros.h"
static void gail_spin_button_class_init (GailSpinButtonClass *klass);
static void gail_spin_button_init (GailSpinButton *button);
static void gail_spin_button_real_initialize (AtkObject *obj,
static void gtk_spin_button_accessible_class_init (GtkSpinButtonAccessibleClass *klass);
static void gtk_spin_button_accessible_init (GtkSpinButtonAccessible *button);
static void gtk_spin_button_accessible_real_initialize (AtkObject *obj,
gpointer data);
static void gail_spin_button_finalize (GObject *object);
static void gtk_spin_button_accessible_finalize (GObject *object);
static void atk_value_interface_init (AtkValueIface *iface);
static void gail_spin_button_real_notify_gtk (GObject *obj,
static void gtk_spin_button_accessible_real_notify_gtk (GObject *obj,
GParamSpec *pspec);
static void gail_spin_button_get_current_value (AtkValue *obj,
static void gtk_spin_button_accessible_get_current_value (AtkValue *obj,
GValue *value);
static void gail_spin_button_get_maximum_value (AtkValue *obj,
static void gtk_spin_button_accessible_get_maximum_value (AtkValue *obj,
GValue *value);
static void gail_spin_button_get_minimum_value (AtkValue *obj,
static void gtk_spin_button_accessible_get_minimum_value (AtkValue *obj,
GValue *value);
static void gail_spin_button_get_minimum_increment (AtkValue *obj,
static void gtk_spin_button_accessible_get_minimum_increment (AtkValue *obj,
GValue *value);
static gboolean gail_spin_button_set_current_value (AtkValue *obj,
static gboolean gtk_spin_button_accessible_set_current_value (AtkValue *obj,
const GValue *value);
static void gail_spin_button_value_changed (GtkAdjustment *adjustment,
static void gtk_spin_button_accessible_value_changed (GtkAdjustment *adjustment,
gpointer data);
G_DEFINE_TYPE_WITH_CODE (GailSpinButton, gail_spin_button, GAIL_TYPE_ENTRY,
G_DEFINE_TYPE_WITH_CODE (GtkSpinButtonAccessible, gtk_spin_button_accessible, GTK_TYPE_ENTRY_ACCESSIBLE,
G_IMPLEMENT_INTERFACE (ATK_TYPE_VALUE, atk_value_interface_init))
static void
gail_spin_button_class_init (GailSpinButtonClass *klass)
gtk_spin_button_accessible_class_init (GtkSpinButtonAccessibleClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
@ -61,27 +60,27 @@ gail_spin_button_class_init (GailSpinButtonClass *klass)
widget_class = (GailWidgetClass*)klass;
widget_class->notify_gtk = gail_spin_button_real_notify_gtk;
widget_class->notify_gtk = gtk_spin_button_accessible_real_notify_gtk;
class->initialize = gail_spin_button_real_initialize;
class->initialize = gtk_spin_button_accessible_real_initialize;
gobject_class->finalize = gail_spin_button_finalize;
gobject_class->finalize = gtk_spin_button_accessible_finalize;
}
static void
gail_spin_button_init (GailSpinButton *button)
gtk_spin_button_accessible_init (GtkSpinButtonAccessible *button)
{
}
static void
gail_spin_button_real_initialize (AtkObject *obj,
gtk_spin_button_accessible_real_initialize (AtkObject *obj,
gpointer data)
{
GtkAdjustment *adjustment;
GailSpinButton *spin_button = GAIL_SPIN_BUTTON (obj);
GtkSpinButtonAccessible *spin_button = GTK_SPIN_BUTTON_ACCESSIBLE (obj);
GtkSpinButton *gtk_spin_button;
ATK_OBJECT_CLASS (gail_spin_button_parent_class)->initialize (obj, data);
ATK_OBJECT_CLASS (gtk_spin_button_accessible_parent_class)->initialize (obj, data);
gtk_spin_button = GTK_SPIN_BUTTON (data);
/*
@ -94,7 +93,7 @@ gail_spin_button_real_initialize (AtkObject *obj,
spin_button->adjustment = gail_adjustment_new (adjustment);
g_signal_connect (adjustment,
"value-changed",
G_CALLBACK (gail_spin_button_value_changed),
G_CALLBACK (gtk_spin_button_accessible_value_changed),
obj);
}
else
@ -107,22 +106,20 @@ gail_spin_button_real_initialize (AtkObject *obj,
static void
atk_value_interface_init (AtkValueIface *iface)
{
iface->get_current_value = gail_spin_button_get_current_value;
iface->get_maximum_value = gail_spin_button_get_maximum_value;
iface->get_minimum_value = gail_spin_button_get_minimum_value;
iface->get_minimum_increment = gail_spin_button_get_minimum_increment;
iface->set_current_value = gail_spin_button_set_current_value;
iface->get_current_value = gtk_spin_button_accessible_get_current_value;
iface->get_maximum_value = gtk_spin_button_accessible_get_maximum_value;
iface->get_minimum_value = gtk_spin_button_accessible_get_minimum_value;
iface->get_minimum_increment = gtk_spin_button_accessible_get_minimum_increment;
iface->set_current_value = gtk_spin_button_accessible_set_current_value;
}
static void
gail_spin_button_get_current_value (AtkValue *obj,
gtk_spin_button_accessible_get_current_value (AtkValue *obj,
GValue *value)
{
GailSpinButton *spin_button;
GtkSpinButtonAccessible *spin_button;
g_return_if_fail (GAIL_IS_SPIN_BUTTON (obj));
spin_button = GAIL_SPIN_BUTTON (obj);
spin_button = GTK_SPIN_BUTTON_ACCESSIBLE (obj);
if (spin_button->adjustment == NULL)
/*
* Adjustment has not been specified
@ -133,14 +130,12 @@ gail_spin_button_get_current_value (AtkValue *obj,
}
static void
gail_spin_button_get_maximum_value (AtkValue *obj,
gtk_spin_button_accessible_get_maximum_value (AtkValue *obj,
GValue *value)
{
GailSpinButton *spin_button;
GtkSpinButtonAccessible *spin_button;
g_return_if_fail (GAIL_IS_SPIN_BUTTON (obj));
spin_button = GAIL_SPIN_BUTTON (obj);
spin_button = GTK_SPIN_BUTTON_ACCESSIBLE (obj);
if (spin_button->adjustment == NULL)
/*
* Adjustment has not been specified
@ -151,14 +146,12 @@ gail_spin_button_get_maximum_value (AtkValue *obj,
}
static void
gail_spin_button_get_minimum_value (AtkValue *obj,
gtk_spin_button_accessible_get_minimum_value (AtkValue *obj,
GValue *value)
{
GailSpinButton *spin_button;
GtkSpinButtonAccessible *spin_button;
g_return_if_fail (GAIL_IS_SPIN_BUTTON (obj));
spin_button = GAIL_SPIN_BUTTON (obj);
spin_button = GTK_SPIN_BUTTON_ACCESSIBLE (obj);
if (spin_button->adjustment == NULL)
/*
* Adjustment has not been specified
@ -169,13 +162,11 @@ gail_spin_button_get_minimum_value (AtkValue *obj,
}
static void
gail_spin_button_get_minimum_increment (AtkValue *obj, GValue *value)
gtk_spin_button_accessible_get_minimum_increment (AtkValue *obj, GValue *value)
{
GailSpinButton *spin_button;
GtkSpinButtonAccessible *spin_button;
g_return_if_fail (GAIL_IS_SPIN_BUTTON (obj));
spin_button = GAIL_SPIN_BUTTON (obj);
spin_button = GTK_SPIN_BUTTON_ACCESSIBLE (obj);
if (spin_button->adjustment == NULL)
/*
* Adjustment has not been specified
@ -186,14 +177,12 @@ gail_spin_button_get_minimum_increment (AtkValue *obj, GValue *value)
}
static gboolean
gail_spin_button_set_current_value (AtkValue *obj,
gtk_spin_button_accessible_set_current_value (AtkValue *obj,
const GValue *value)
{
GailSpinButton *spin_button;
GtkSpinButtonAccessible *spin_button;
g_return_val_if_fail (GAIL_IS_SPIN_BUTTON (obj), FALSE);
spin_button = GAIL_SPIN_BUTTON (obj);
spin_button = GTK_SPIN_BUTTON_ACCESSIBLE (obj);
if (spin_button->adjustment == NULL)
/*
* Adjustment has not been specified
@ -204,25 +193,25 @@ gail_spin_button_set_current_value (AtkValue *obj,
}
static void
gail_spin_button_finalize (GObject *object)
gtk_spin_button_accessible_finalize (GObject *object)
{
GailSpinButton *spin_button = GAIL_SPIN_BUTTON (object);
GtkSpinButtonAccessible *spin_button = GTK_SPIN_BUTTON_ACCESSIBLE (object);
if (spin_button->adjustment)
{
g_object_unref (spin_button->adjustment);
spin_button->adjustment = NULL;
}
G_OBJECT_CLASS (gail_spin_button_parent_class)->finalize (object);
G_OBJECT_CLASS (gtk_spin_button_accessible_parent_class)->finalize (object);
}
static void
gail_spin_button_real_notify_gtk (GObject *obj,
gtk_spin_button_accessible_real_notify_gtk (GObject *obj,
GParamSpec *pspec)
{
GtkWidget *widget = GTK_WIDGET (obj);
GailSpinButton *spin_button = GAIL_SPIN_BUTTON (gtk_widget_get_accessible (widget));
GtkSpinButtonAccessible *spin_button = GTK_SPIN_BUTTON_ACCESSIBLE (gtk_widget_get_accessible (widget));
if (strcmp (pspec->name, "adjustment") == 0)
{
@ -247,24 +236,24 @@ gail_spin_button_real_notify_gtk (GObject *obj,
spin_button->adjustment = gail_adjustment_new (adjustment);
g_signal_connect (adjustment,
"value-changed",
G_CALLBACK (gail_spin_button_value_changed),
G_CALLBACK (gtk_spin_button_accessible_value_changed),
spin_button);
}
else
GAIL_WIDGET_CLASS (gail_spin_button_parent_class)->notify_gtk (obj, pspec);
GAIL_WIDGET_CLASS (gtk_spin_button_accessible_parent_class)->notify_gtk (obj, pspec);
}
static void
gail_spin_button_value_changed (GtkAdjustment *adjustment,
gtk_spin_button_accessible_value_changed (GtkAdjustment *adjustment,
gpointer data)
{
GailSpinButton *spin_button;
GtkSpinButtonAccessible *spin_button;
gail_return_if_fail (adjustment != NULL);
gail_return_if_fail (data != NULL);
if (adjustment == NULL || data == NULL)
return;
spin_button = GAIL_SPIN_BUTTON (data);
spin_button = GTK_SPIN_BUTTON_ACCESSIBLE (data);
g_object_notify (G_OBJECT (spin_button), "accessible-value");
}

View File

@ -0,0 +1,53 @@
/* 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 Library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library 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.
*/
#ifndef __GTK_SPIN_BUTTON_ACCESSIBLE_H__
#define __GTK_SPIN_BUTTON_ACCESSIBLE_H__
#include "gtkentryaccessible.h"
G_BEGIN_DECLS
#define GTK_TYPE_SPIN_BUTTON_ACCESSIBLE (gtk_spin_button_accessible_get_type ())
#define GTK_SPIN_BUTTON_ACCESSIBLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_SPIN_BUTTON_ACCESSIBLE, GtkSpinButtonAccessible))
#define GTK_SPIN_BUTTON_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_SPIN_BUTTON_ACCESSIBLE, GtkSpinButtonAccessibleClass))
#define GTK_IS_SPIN_BUTTON_ACCESSIBLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_SPIN_BUTTON_ACCESSIBLE))
#define GTK_IS_SPIN_BUTTON_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_SPIN_BUTTON_ACCESSIBLE))
#define GTK_SPIN_BUTTON_ACCESSIBLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_SPIN_BUTTON_ACCESSIBLE, GtkSpinButtonAccessibleClass))
typedef struct _GtkSpinButtonAccessible GtkSpinButtonAccessible;
typedef struct _GtkSpinButtonAccessibleClass GtkSpinButtonAccessibleClass;
struct _GtkSpinButtonAccessible
{
GtkEntryAccessible parent;
AtkObject *adjustment;
};
struct _GtkSpinButtonAccessibleClass
{
GtkEntryAccessibleClass parent_class;
};
GType gtk_spin_button_accessible_get_type (void);
G_END_DECLS
#endif /* __GTK_SPIN_BUTTON_ACCESSIBLE_H__ */

View File

@ -67,6 +67,8 @@
#include "gtkwidgetprivate.h"
#include "gtkstylecontextprivate.h"
#include "a11y/gtkentryaccessible.h"
/**
* SECTION:gtkentry
* @Short_description: A single line text entry field
@ -1870,6 +1872,8 @@ gtk_entry_class_init (GtkEntryClass *class)
GTK_PARAM_READABLE));
g_type_class_add_private (gobject_class, sizeof (GtkEntryPrivate));
gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_ENTRY_ACCESSIBLE);
}
static void

View File

@ -45,6 +45,8 @@
#include "gtkintl.h"
#include "gtktypebuiltins.h"
#include "a11y/gtkspinbuttonaccessible.h"
#define MIN_SPIN_BUTTON_WIDTH 30
#define MAX_TIMER_CALLS 5
#define EPSILON 1e-10
@ -507,6 +509,8 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class)
add_spin_binding (binding_set, GDK_KEY_Page_Down, GDK_CONTROL_MASK, GTK_SCROLL_START);
g_type_class_add_private (class, sizeof (GtkSpinButtonPrivate));
gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_SPIN_BUTTON_ACCESSIBLE);
}
static void