summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/caja-desktop-window.c37
-rw-r--r--src/caja-desktop-window.h14
2 files changed, 51 insertions, 0 deletions
diff --git a/src/caja-desktop-window.c b/src/caja-desktop-window.c
index 7bbd08cb..2e8ad5bd 100644
--- a/src/caja-desktop-window.c
+++ b/src/caja-desktop-window.c
@@ -37,6 +37,41 @@
#include <gio/gio.h>
#include <glib/gi18n.h>
+/* Tell screen readers that this is a desktop window */
+
+G_DEFINE_TYPE (CajaDesktopWindowAccessible, caja_desktop_window_accessible,
+ GTK_TYPE_WINDOW_ACCESSIBLE);
+
+static AtkAttributeSet *
+desktop_get_attributes (AtkObject *accessible)
+{
+ AtkAttributeSet *attributes;
+ AtkAttribute *is_desktop;
+
+ attributes = ATK_OBJECT_CLASS (caja_desktop_window_accessible_parent_class)->get_attributes (accessible);
+
+ is_desktop = g_malloc (sizeof (AtkAttribute));
+ is_desktop->name = g_strdup ("is-desktop");
+ is_desktop->value = g_strdup ("true");
+
+ attributes = g_slist_append (attributes, is_desktop);
+
+ return attributes;
+}
+
+static void
+caja_desktop_window_accessible_init (CajaDesktopWindowAccessible *window)
+{
+}
+
+static void
+caja_desktop_window_accessible_class_init (CajaDesktopWindowAccessibleClass *klass)
+{
+ AtkObjectClass *aclass = ATK_OBJECT_CLASS (klass);
+
+ aclass->get_attributes = desktop_get_attributes;
+}
+
struct CajaDesktopWindowDetails
{
gulong size_changed_id;
@@ -299,6 +334,8 @@ caja_desktop_window_class_init (CajaDesktopWindowClass *klass)
wclass->map = map;
wclass->draw = draw;
+ gtk_widget_class_set_accessible_type (wclass, CAJA_TYPE_DESKTOP_WINDOW_ACCESSIBLE);
+
nclass->window_type = CAJA_WINDOW_DESKTOP;
nclass->get_title = real_get_title;
nclass->get_icon = real_get_icon;
diff --git a/src/caja-desktop-window.h b/src/caja-desktop-window.h
index 2bd3579c..5692177b 100644
--- a/src/caja-desktop-window.h
+++ b/src/caja-desktop-window.h
@@ -32,6 +32,8 @@
#include "caja-application.h"
#include "caja-spatial-window.h"
+#include <gtk/gtk-a11y.h>
+
#define CAJA_TYPE_DESKTOP_WINDOW caja_desktop_window_get_type()
#define CAJA_DESKTOP_WINDOW(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), CAJA_TYPE_DESKTOP_WINDOW, CajaDesktopWindow))
@@ -64,4 +66,16 @@ CajaDesktopWindow *caja_desktop_window_new (CajaApplication *app
void caja_desktop_window_update_directory (CajaDesktopWindow *window);
gboolean caja_desktop_window_loaded (CajaDesktopWindow *window);
+#define CAJA_TYPE_DESKTOP_WINDOW_ACCESSIBLE caja_desktop_window_accessible_get_type()
+
+typedef struct
+{
+ GtkWindowAccessible parent_spot;
+} CajaDesktopWindowAccessible;
+
+typedef struct
+{
+ GtkWindowAccessibleClass parent_spot;
+} CajaDesktopWindowAccessibleClass;
+
#endif /* CAJA_DESKTOP_WINDOW_H */