diff --git a/clutter/cally/cally.c b/clutter/cally/cally.c index 85be3eb03..fd95d411c 100644 --- a/clutter/cally/cally.c +++ b/clutter/cally/cally.c @@ -22,11 +22,18 @@ #include "cally.h" +#include "cally-actor.h" +#include "cally-group.h" +#include "cally-stage.h" +#include "cally-text.h" +#include "cally-texture.h" +#include "cally-rectangle.h" +#include "cally-clone.h" + #include "cally-factory.h" #include "cally-util.h" -extern void gnome_accessibility_module_init (void); -extern void gnome_accessibility_module_shutdown (void); +#include "clutter-debug.h" static int cally_initialized = FALSE; @@ -39,11 +46,21 @@ CALLY_ACCESSIBLE_FACTORY (CALLY_TYPE_TEXTURE, cally_texture, cally_texture_new) CALLY_ACCESSIBLE_FACTORY (CALLY_TYPE_RECTANGLE, cally_rectangle, cally_rectangle_new) CALLY_ACCESSIBLE_FACTORY (CALLY_TYPE_CLONE, cally_clone, cally_clone_new) -void -cally_accessibility_module_init(void) +/** + * cally_acccessibility_init: + * + * Initializes the accessibility support. + * + * Return value: %TRUE if accessibility support has been correctly + * initialized. + * + * Since: 1.4 + */ +gboolean +cally_accessibility_init (void) { if (cally_initialized) - return; + return TRUE; cally_initialized = TRUE; @@ -59,35 +76,22 @@ cally_accessibility_module_init(void) /* Initialize the CallyUtility class */ g_type_class_unref (g_type_class_ref (CALLY_TYPE_UTIL)); - g_message ("Clutter Accessibility Module initialized"); -} + CLUTTER_NOTE (MISC, "Clutter Accessibility initialized"); - -/** - * gnome_accessibility_module_shutdown: - * @void: - * - * Common gnome hook to be used in order to activate the module - **/ -void -gnome_accessibility_module_init (void) -{ - cally_accessibility_module_init (); + return cally_initialized; } /** - * gnome_accessibility_module_shutdown: - * @void: + * cally_get_cally_initialized: * - * Common gnome hook to be used in order to de-activate the module - **/ -void -gnome_accessibility_module_shutdown (void) + * Returns if the accessibility support using cally is enabled. + * + * Return value: %TRUE if accessibility support has been correctly + * initialized. + * + * Since: 1.4 + */ +gboolean cally_get_cally_initialized (void) { - if (!cally_initialized) - return; - - cally_initialized = FALSE; - - g_message ("Clutter Accessibility Module shutdown"); + return cally_initialized; } diff --git a/clutter/cally/cally.h b/clutter/cally/cally.h index 7120809b4..4924dfec8 100644 --- a/clutter/cally/cally.h +++ b/clutter/cally/cally.h @@ -23,17 +23,12 @@ #ifndef __CALLY_H #define __CALLY_H -#include "cally-actor.h" -#include "cally-group.h" -#include "cally-stage.h" -#include "cally-text.h" -#include "cally-texture.h" -#include "cally-rectangle.h" -#include "cally-clone.h" +#include G_BEGIN_DECLS -void cally_accessibility_module_init(void); +gboolean cally_get_cally_initialized (void); +gboolean cally_accessibility_init (void); G_END_DECLS diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c index 3392f9ce8..e2a406e03 100644 --- a/clutter/clutter-main.c +++ b/clutter/clutter-main.c @@ -114,6 +114,8 @@ #include "cogl/cogl.h" #include "pango/cogl-pango.h" +#include "cally.h" /* For accessibility support */ + /* main context */ static ClutterMainContext *ClutterCntx = NULL; @@ -128,6 +130,7 @@ static gboolean clutter_show_fps = FALSE; static gboolean clutter_fatal_warnings = FALSE; static gboolean clutter_disable_mipmap_text = FALSE; static gboolean clutter_use_fuzzy_picking = FALSE; +static gboolean clutter_enable_accessibility = TRUE; static guint clutter_default_fps = 60; @@ -203,6 +206,24 @@ clutter_get_show_fps (void) return clutter_show_fps; } +/** + * clutter_get_accessibility_enabled: + * + * Returns whether Clutter has accessibility support enabled. As + * least, a value of TRUE means that there are a proper AtkUtil + * implementation available + * + * Return value: %TRUE if Clutter has accessibility support enabled + * + * Since: 1.4 + */ +gboolean +clutter_get_accessibility_enabled (void) +{ + return cally_get_cally_initialized (); +} + + void _clutter_stage_maybe_relayout (ClutterActor *stage) { @@ -1591,6 +1612,10 @@ clutter_init_real (GError **error) clutter_is_initialized = TRUE; ctx->is_initialized = TRUE; + /* Initialize a11y */ + if (clutter_enable_accessibility) + cally_accessibility_init (); + return CLUTTER_INIT_SUCCESS; } @@ -1622,6 +1647,8 @@ static GOptionEntry clutter_args[] = { { "clutter-no-profile", 0, 0, G_OPTION_ARG_CALLBACK, clutter_arg_no_profile_cb, N_("Clutter profiling flags to unset"), "FLAGS" }, #endif /* CLUTTER_ENABLE_PROFILE */ + { "clutter-enable-accessibility", 0, 0, G_OPTION_ARG_NONE, &clutter_enable_accessibility, + N_("Enable accessibility"), NULL }, { NULL, }, }; diff --git a/clutter/clutter-main.h b/clutter/clutter-main.h index 067cef086..f5fe11b62 100644 --- a/clutter/clutter-main.h +++ b/clutter/clutter-main.h @@ -102,6 +102,7 @@ void clutter_do_event (ClutterEvent *event); gboolean clutter_get_debug_enabled (void); gboolean clutter_get_show_fps (void); gulong clutter_get_timestamp (void); +gboolean clutter_get_accessibility_enabled (void); /* Threading functions */ void clutter_threads_init (void);