forked from AuroraMiddleware/gtk
Add a private function for accessible factory registration
This avoids repeating the same code for each widget that has its own accessible implementation inside GTK+.
This commit is contained in:
parent
4a4004b706
commit
9d321437b6
@ -376,6 +376,7 @@ endif
|
||||
gtk_private_h_sources = \
|
||||
gtk9slice.h \
|
||||
gtkaccelgroupprivate.h \
|
||||
gtkaccessibleprivate.h \
|
||||
gtkanimationdescription.h \
|
||||
gtkappchooserprivate.h \
|
||||
gtkappchoosermodule.h \
|
||||
|
@ -131,3 +131,34 @@ gtk_accessible_real_connect_widget_destroyed (GtkAccessible *accessible)
|
||||
&priv->widget);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* _gtk_accessible_set_factory_type:
|
||||
* @widget_type: a #GtkWidget subtype
|
||||
* @factory_type: a #AtkObjectFactory subtype
|
||||
*
|
||||
* A wrapper around atk_registry_set_factory_type().
|
||||
*
|
||||
* Only installs the factory if accessibility is
|
||||
* enabled.
|
||||
*/
|
||||
void
|
||||
_gtk_accessible_set_factory_type (GType widget_type,
|
||||
GType factory_type)
|
||||
{
|
||||
AtkObjectFactory *factory;
|
||||
AtkRegistry *registry;
|
||||
GType accessible_type;
|
||||
|
||||
/*
|
||||
* Figure out whether accessibility is enabled by looking
|
||||
* at the type of the accessible object which would be created
|
||||
* for GtkWidget.
|
||||
*/
|
||||
registry = atk_get_default_registry ();
|
||||
factory = atk_registry_get_factory (registry, GTK_TYPE_WIDGET);
|
||||
accessible_type = atk_object_factory_get_accessible_type (factory);
|
||||
if (g_type_is_a (accessible_type, GTK_TYPE_ACCESSIBLE))
|
||||
atk_registry_set_factory_type (registry, widget_type, factory_type);
|
||||
}
|
||||
|
||||
|
31
gtk/gtkaccessibleprivate.h
Normal file
31
gtk/gtkaccessibleprivate.h
Normal file
@ -0,0 +1,31 @@
|
||||
/* GTK - The GIMP Toolkit
|
||||
* Copyright (C) 2011 Red Hat, 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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GTK_ACCESSIBLE_PRIVATE_H__
|
||||
#define __GTK_ACCESSIBLE_PRIVATE_H__
|
||||
|
||||
#include "gtkaccessible.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
void _gtk_accessible_set_factory_type (GType widget_type,
|
||||
GType factory_type);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GTK_ACCESSIBLE_PRIVATE_H__ */
|
Loading…
Reference in New Issue
Block a user