* 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 <stdio.h>
#include <stdlib.h>
+#include <gdk/gdk.h>
#include <gtk/gtkx.h>
-#include "gailbooleancell.h"
-#include "gailbutton.h"
-#include "gailcell.h"
-#include "gailcheckmenuitem.h"
-#include "gailcombobox.h"
-#include "gailcontainer.h"
-#include "gailcontainercell.h"
-#include "gailexpander.h"
-#include "gailimagecell.h"
-#include "gailmenu.h"
-#include "gailmenushell.h"
-#include "gailmenuitem.h"
-#include "gailnotebook.h"
-#include "gailradiomenuitem.h"
-#include "gailrenderercell.h"
-#include "gailstatusbar.h"
-#include "gailtextcell.h"
-#include "gailtoplevel.h"
-#include "gailtreeview.h"
+#include <gtk/gtkentry.h>
+#include <gtk/gtknotebook.h>
+#include <gtk/gtkmenuitem.h>
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkmenubar.h>
+#include <gtk/gtktogglebutton.h>
+#include <gtk/gtkcombobox.h>
+#include <gtk/gtkaccessible.h>
#include "gailutil.h"
-#include "gailwidget.h"
-#include "gailwindow.h"
+#include "gailmisc.h"
-#include "gailfactory.h"
-
-#define GNOME_ACCESSIBILITY_ENV "GNOME_ACCESSIBILITY"
static gboolean gail_focus_watcher (GSignalInvocationHint *ihint,
guint n_param_values,
guint n_param_values,
const GValue *param_values,
gpointer data);
-static AtkObject* gail_get_accessible_for_widget (GtkWidget *widget,
- gboolean *transient);
static void gail_finish_select (GtkWidget *widget);
static void gail_map_cb (GtkWidget *widget);
static void gail_map_submenu_cb (GtkWidget *widget);
static void gail_set_focus_object (AtkObject *focus_obj,
AtkObject *obj);
-GtkWidget* focus_widget = NULL;
+GtkWidget* _focus_widget = NULL;
static GtkWidget* next_focus_widget = NULL;
static gboolean was_deselect = FALSE;
static GtkWidget* subsequent_focus_widget = NULL;
static guint focus_tracker_id = 0;
static GQuark quark_focus_object = 0;
-GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_WIDGET, GailWidget, gail_widget, GTK_TYPE_WIDGET)
-GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_CONTAINER, GailContainer, gail_container, GTK_TYPE_CONTAINER)
-GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_BUTTON, GailButton, gail_button, GTK_TYPE_BUTTON)
-GAIL_IMPLEMENT_FACTORY_WITH_FUNC (GAIL_TYPE_MENU_ITEM, GailMenuItem, gail_menu_item, gail_menu_item_new)
-GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_COMBO_BOX, GailComboBox, gail_combo_box, GTK_TYPE_COMBO_BOX)
-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)
-GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_STATUSBAR, GailStatusbar, gail_statusbar, GTK_TYPE_STATUSBAR)
-GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_NOTEBOOK, GailNotebook, gail_notebook, GTK_TYPE_NOTEBOOK)
-GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_TREE_VIEW, GailTreeView, gail_tree_view, GTK_TYPE_TREE_VIEW)
-GAIL_IMPLEMENT_FACTORY_WITH_FUNC (GAIL_TYPE_CHECK_MENU_ITEM, GailCheckMenuItem, gail_check_menu_item, gail_check_menu_item_new)
-GAIL_IMPLEMENT_FACTORY_WITH_FUNC (GAIL_TYPE_RADIO_MENU_ITEM, GailRadioMenuItem, gail_radio_menu_item, gail_radio_menu_item_new)
-GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_EXPANDER, GailExpander, gail_expander, GTK_TYPE_EXPANDER)
-GAIL_IMPLEMENT_FACTORY_WITH_FUNC_DUMMY (GAIL_TYPE_RENDERER_CELL, GailRendererCell, gail_renderer_cell, GTK_TYPE_CELL_RENDERER, gail_renderer_cell_new)
-GAIL_IMPLEMENT_FACTORY_WITH_FUNC_DUMMY (GAIL_TYPE_BOOLEAN_CELL, GailBooleanCell, gail_boolean_cell, GTK_TYPE_CELL_RENDERER_TOGGLE, gail_boolean_cell_new)
-GAIL_IMPLEMENT_FACTORY_WITH_FUNC_DUMMY (GAIL_TYPE_IMAGE_CELL, GailImageCell, gail_image_cell, GTK_TYPE_CELL_RENDERER_PIXBUF, gail_image_cell_new)
-GAIL_IMPLEMENT_FACTORY_WITH_FUNC_DUMMY (GAIL_TYPE_TEXT_CELL, GailTextCell, gail_text_cell, GTK_TYPE_CELL_RENDERER_TEXT, gail_text_cell_new)
-
static AtkObject*
gail_get_accessible_for_widget (GtkWidget *widget,
gboolean *transient)
{
if (event->type == GDK_MOTION_NOTIFY && gtk_widget_has_focus (widget))
{
- if (widget == focus_widget)
+ if (widget == _focus_widget)
{
return TRUE;
}
* If previously focused widget is not a GtkMenuItem or a GtkMenu,
* keep track of it so we can return to it after menubar is deactivated
*/
- if (focus_widget &&
- !GTK_IS_MENU_ITEM (focus_widget) &&
- !GTK_IS_MENU (focus_widget))
+ if (_focus_widget &&
+ !GTK_IS_MENU_ITEM (_focus_widget) &&
+ !GTK_IS_MENU (_focus_widget))
{
void *vp_focus_before_menu = &focus_before_menu;
- focus_before_menu = focus_widget;
+ focus_before_menu = _focus_widget;
g_object_add_weak_pointer (G_OBJECT (focus_before_menu), vp_focus_before_menu);
}
AtkObject *atk_obj;
gboolean transient;
- if (widget != focus_widget)
+ if (widget != _focus_widget)
{
- if (focus_widget)
+ if (_focus_widget)
{
- void *vp_focus_widget = &focus_widget;
- g_object_remove_weak_pointer (G_OBJECT (focus_widget), vp_focus_widget);
+ void *vp_focus_widget = &_focus_widget;
+ g_object_remove_weak_pointer (G_OBJECT (_focus_widget), vp_focus_widget);
}
- focus_widget = widget;
- if (focus_widget)
+ _focus_widget = widget;
+ if (_focus_widget)
{
- void *vp_focus_widget = &focus_widget;
- g_object_add_weak_pointer (G_OBJECT (focus_widget), vp_focus_widget);
+ void *vp_focus_widget = &_focus_widget;
+ g_object_add_weak_pointer (G_OBJECT (_focus_widget), vp_focus_widget);
/*
* The UI may not have been updated yet; e.g. in gtkhtml2
* html_view_layout() is called in a idle handler
*/
- if (focus_widget == focus_before_menu)
+ if (_focus_widget == focus_before_menu)
{
void *vp_focus_before_menu = &focus_before_menu;
g_object_remove_weak_pointer (G_OBJECT (focus_before_menu), vp_focus_before_menu);
focus_before_menu = NULL;
}
}
- gail_focus_notify_when_idle (focus_widget);
+ gail_focus_notify_when_idle (_focus_widget);
}
else
{
- if (focus_widget)
- atk_obj = gail_get_accessible_for_widget (focus_widget, &transient);
+ if (_focus_widget)
+ atk_obj = gail_get_accessible_for_widget (_focus_widget, &transient);
else
atk_obj = NULL;
/*
}
}
-static int gail_initialized = FALSE;
-
void
-gail_accessibility_module_init (void)
+_gtk_accessibility_init (void)
{
- const char *env_a_t_support;
- gboolean a_t_support = FALSE;
+ static int initialized = FALSE;
- if (gail_initialized)
- {
- return;
- }
- gail_initialized = TRUE;
- quark_focus_object = g_quark_from_static_string ("gail-focus-object");
+ if (initialized)
+ return;
- env_a_t_support = g_getenv (GNOME_ACCESSIBILITY_ENV);
-
- if (env_a_t_support)
- a_t_support = atoi (env_a_t_support);
- if (a_t_support)
- fprintf (stderr, "GTK Accessibility Module initialized\n");
-
- GAIL_WIDGET_SET_FACTORY (GTK_TYPE_WIDGET, gail_widget);
- GAIL_WIDGET_SET_FACTORY (GTK_TYPE_CONTAINER, gail_container);
- GAIL_WIDGET_SET_FACTORY (GTK_TYPE_BUTTON, gail_button);
- GAIL_WIDGET_SET_FACTORY (GTK_TYPE_MENU_ITEM, gail_menu_item);
- GAIL_WIDGET_SET_FACTORY (GTK_TYPE_COMBO_BOX, gail_combo_box);
- 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);
- GAIL_WIDGET_SET_FACTORY (GTK_TYPE_STATUSBAR, gail_statusbar);
- GAIL_WIDGET_SET_FACTORY (GTK_TYPE_NOTEBOOK, gail_notebook);
- GAIL_WIDGET_SET_FACTORY (GTK_TYPE_TREE_VIEW, gail_tree_view);
- GAIL_WIDGET_SET_FACTORY (GTK_TYPE_CELL_RENDERER_TEXT, gail_text_cell);
- GAIL_WIDGET_SET_FACTORY (GTK_TYPE_CELL_RENDERER_TOGGLE, gail_boolean_cell);
- GAIL_WIDGET_SET_FACTORY (GTK_TYPE_CELL_RENDERER_PIXBUF, gail_image_cell);
- GAIL_WIDGET_SET_FACTORY (GTK_TYPE_CELL_RENDERER, gail_renderer_cell);
- GAIL_WIDGET_SET_FACTORY (GTK_TYPE_CHECK_MENU_ITEM, gail_check_menu_item);
- GAIL_WIDGET_SET_FACTORY (GTK_TYPE_RADIO_MENU_ITEM, gail_radio_menu_item);
- GAIL_WIDGET_SET_FACTORY (GTK_TYPE_EXPANDER, gail_expander);
+ initialized = TRUE;
+ quark_focus_object = g_quark_from_static_string ("gail-focus-object");
atk_focus_tracker_init (gail_focus_tracker_init);
focus_tracker_id = atk_add_focus_tracker (gail_focus_tracker);
- /* Initialize the GailUtility class */
- g_type_class_unref (g_type_class_ref (GAIL_TYPE_UTIL));
- g_type_class_unref (g_type_class_ref (GAIL_TYPE_MISC));
+ _gail_util_install ();
+
+ atk_misc_instance = g_object_new (GAIL_TYPE_MISC, NULL);
}