[caja] 02/02: Revert "debian/patches: Add 0003_orca-not-selected.patch. Fix accessibility issues with orca (screen reader) and send object:state-changed:selected properly. (Closes: #757851)."
Mike Gabriel
sunweaver at debian.org
Tue Mar 10 18:45:23 UTC 2015
This is an automated email from the git hooks/post-receive script.
sunweaver pushed a commit to branch master
in repository caja.
commit 9fe7c1185d7a6045244537a377a8ab5cd4d05943
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date: Tue Mar 10 19:45:12 2015 +0100
Revert "debian/patches: Add 0003_orca-not-selected.patch. Fix accessibility issues with orca (screen reader) and send object:state-changed:selected properly. (Closes: #757851)."
This reverts commit c626a8bb6c5e99806298d4463155101f286e8bc4.
---
debian/patches/0003_orca-not-selected.patch | 543 ----------------------------
debian/patches/series | 1 -
2 files changed, 544 deletions(-)
diff --git a/debian/patches/0003_orca-not-selected.patch b/debian/patches/0003_orca-not-selected.patch
deleted file mode 100644
index 63e8d1a..0000000
--- a/debian/patches/0003_orca-not-selected.patch
+++ /dev/null
@@ -1,543 +0,0 @@
-From 9a9bd3434a815ee6743c3201d2152080b212063b Mon Sep 17 00:00:00 2001
-From: infirit <infirit at gmail.com>
-Date: Sat, 25 Oct 2014 22:59:46 +0200
-Subject: [PATCH] Fix accessibility and send object:state-changed:selected
-
-Based on nautilus commit: b11c8a69479b5307d946dbc5742baf5cca75ae06
-From: Mike Gorse <mgorse at novell.com>
----
- eel/eel-canvas.c | 364 ++++++++++++++++++++++++++++----
- eel/eel-canvas.h | 13 ++
- libcaja-private/caja-icon-canvas-item.c | 12 +-
- 3 files changed, 344 insertions(+), 45 deletions(-)
-
-diff --git a/eel/eel-canvas.c b/eel/eel-canvas.c
-index 8341958..9f54787 100644
---- a/eel/eel-canvas.c
-+++ b/eel/eel-canvas.c
-@@ -1854,6 +1854,8 @@ static void eel_canvas_draw_background (EelCanvas *canvas,
- int height);
- #endif
-
-+static AtkObject *eel_canvas_get_accessible (GtkWidget *widget);
-+
- static GtkLayoutClass *canvas_parent_class;
-
- static guint canvas_signals[LAST_SIGNAL];
-@@ -1936,15 +1938,84 @@ eel_canvas_accessible_adjustment_changed (GtkAdjustment *adjustment,
- }
-
- static void
-+accessible_destroy_cb (GtkWidget *widget,
-+ GtkAccessible *accessible)
-+{
-+ gtk_accessible_set_widget (accessible, NULL);
-+ atk_object_notify_state_change (ATK_OBJECT (accessible), ATK_STATE_DEFUNCT, TRUE);
-+}
-+
-+static gboolean
-+accessible_focus_cb (GtkWidget *widget,
-+ GdkEventFocus *event)
-+{
-+ AtkObject* accessible = gtk_widget_get_accessible (widget);
-+ atk_object_notify_state_change (accessible, ATK_STATE_FOCUSED, event->in);
-+
-+ return FALSE;
-+}
-+
-+static void
-+accessible_notify_cb (GObject *obj,
-+ GParamSpec *pspec)
-+{
-+ GtkWidget* widget = GTK_WIDGET (obj);
-+ AtkObject* atk_obj = gtk_widget_get_accessible (widget);
-+ AtkState state;
-+ gboolean value;
-+
-+ if (strcmp (pspec->name, "visible") == 0) {
-+ state = ATK_STATE_VISIBLE;
-+ value = gtk_widget_get_visible (widget);
-+ } else if (strcmp (pspec->name, "sensitive") == 0) {
-+ state = ATK_STATE_SENSITIVE;
-+ value = gtk_widget_get_sensitive (widget);
-+
-+ atk_object_notify_state_change (atk_obj, ATK_STATE_ENABLED, value);
-+ } else {
-+ g_assert_not_reached ();
-+ }
-+
-+ atk_object_notify_state_change (atk_obj, state, value);
-+}
-+
-+/* Translate GtkWidget::size-allocate to AtkComponent::bounds-changed */
-+static void
-+accessible_size_allocate_cb (GtkWidget *widget,
-+ GtkAllocation *allocation)
-+{
-+ AtkObject* accessible = gtk_widget_get_accessible (widget);
-+ AtkRectangle rect;
-+
-+ rect.x = allocation->x;
-+ rect.y = allocation->y;
-+ rect.width = allocation->width;
-+ rect.height = allocation->height;
-+
-+ g_signal_emit_by_name (accessible, "bounds_changed", &rect);
-+}
-+
-+/* Translate GtkWidget mapped state into AtkObject showing */
-+static void
-+accessible_map_cb (GtkWidget *widget)
-+{
-+ AtkObject *accessible = gtk_widget_get_accessible (widget);
-+ atk_object_notify_state_change (accessible, ATK_STATE_SHOWING,
-+ gtk_widget_get_mapped (widget));
-+}
-+
-+
-+static void
- eel_canvas_accessible_initialize (AtkObject *obj,
- gpointer data)
- {
-- EelCanvas *canvas;
-+ EelCanvas *canvas = data;
-
-- if (ATK_OBJECT_CLASS (accessible_parent_class)->initialize != NULL)
-+ if (ATK_OBJECT_CLASS (accessible_parent_class)->initialize != NULL) {
- ATK_OBJECT_CLASS (accessible_parent_class)->initialize (obj, data);
-+ }
-
-- canvas = EEL_CANVAS (data);
-+ gtk_accessible_set_widget (GTK_ACCESSIBLE (obj), GTK_WIDGET (data));
- g_signal_connect (gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (canvas)),
- "value_changed",
- G_CALLBACK (eel_canvas_accessible_adjustment_changed),
-@@ -1955,6 +2026,24 @@ eel_canvas_accessible_initialize (AtkObject *obj,
- obj);
-
- obj->role = ATK_ROLE_LAYERED_PANE;
-+ /* below adapted from gtkwidgetaccessible.c */
-+
-+ g_signal_connect_after (canvas, "destroy",
-+ G_CALLBACK (accessible_destroy_cb), obj);
-+ g_signal_connect_after (canvas, "focus-in-event",
-+ G_CALLBACK (accessible_focus_cb), NULL);
-+ g_signal_connect_after (canvas, "focus-out-event",
-+ G_CALLBACK (accessible_focus_cb), NULL);
-+ g_signal_connect (canvas, "notify::visible",
-+ G_CALLBACK (accessible_notify_cb), NULL);
-+ g_signal_connect (canvas, "notify::sensitive",
-+ G_CALLBACK (accessible_notify_cb), NULL);
-+ g_signal_connect (canvas, "size-allocate",
-+ G_CALLBACK (accessible_size_allocate_cb), NULL);
-+ g_signal_connect (canvas, "map",
-+ G_CALLBACK (accessible_map_cb), NULL);
-+ g_signal_connect (canvas, "unmap",
-+ G_CALLBACK (accessible_map_cb), NULL);
- }
-
- static gint
-@@ -1969,7 +2058,6 @@ eel_canvas_accessible_get_n_children (AtkObject* obj)
- widget = gtk_accessible_get_widget (accessible);
- if (widget == NULL)
- {
-- /* State is defunct */
- return 0;
- }
-
-@@ -1978,6 +2066,7 @@ eel_canvas_accessible_get_n_children (AtkObject* obj)
- canvas = EEL_CANVAS (widget);
- root_group = eel_canvas_root (canvas);
- g_return_val_if_fail (root_group, 0);
-+
- return 1;
- }
-
-@@ -1998,10 +2087,10 @@ eel_canvas_accessible_ref_child (AtkObject *obj,
- }
-
- accessible = GTK_ACCESSIBLE (obj);
-+
- widget = gtk_accessible_get_widget (accessible);
- if (widget == NULL)
- {
-- /* State is defunct */
- return NULL;
- }
-
-@@ -2009,57 +2098,245 @@ eel_canvas_accessible_ref_child (AtkObject *obj,
- root_group = eel_canvas_root (canvas);
- g_return_val_if_fail (root_group, NULL);
- atk_object = atk_gobject_accessible_for_object (G_OBJECT (root_group));
-- g_object_ref (atk_object);
-
-- g_warning ("Accessible support for FooGroup needs to be implemented");
-+ return g_object_ref (atk_object);
-+}
-+
-+static gboolean
-+eel_canvas_accessible_all_parents_visible (GtkWidget *widget)
-+{
-+ GtkWidget *iter_parent = NULL;
-+ gboolean result = TRUE;
-+
-+ for (iter_parent = gtk_widget_get_parent (widget); iter_parent != NULL;
-+ iter_parent = gtk_widget_get_parent (iter_parent)) {
-+ if (!gtk_widget_get_visible (iter_parent)) {
-+ result = FALSE;
-+ break;
-+ }
-+ }
-
-- return atk_object;
-+ return result;
- }
-
--static void
--eel_canvas_accessible_class_init (AtkObjectClass *klass)
-+static gboolean
-+eel_canvas_accessible_on_screen (GtkWidget *widget)
- {
-- accessible_parent_class = g_type_class_peek_parent (klass);
-+ GtkAllocation allocation;
-+ GtkWidget *viewport;
-+ gboolean return_value = TRUE;
-+
-+ gtk_widget_get_allocation (widget, &allocation);
-
-- klass->initialize = eel_canvas_accessible_initialize;
-- klass->get_n_children = eel_canvas_accessible_get_n_children;
-- klass->ref_child = eel_canvas_accessible_ref_child;
-+ viewport = gtk_widget_get_ancestor (widget, GTK_TYPE_VIEWPORT);
-+
-+ if (viewport) {
-+ GtkAllocation viewport_allocation;
-+ GtkAdjustment *adjustment;
-+ GdkRectangle visible_rect;
-+
-+ gtk_widget_get_allocation (viewport, &viewport_allocation);
-+
-+ adjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (viewport));
-+ visible_rect.y = gtk_adjustment_get_value (adjustment);
-+ adjustment = gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (viewport));
-+ visible_rect.x = gtk_adjustment_get_value (adjustment);
-+ visible_rect.width = viewport_allocation.width;
-+ visible_rect.height = viewport_allocation.height;
-+
-+ if (((allocation.x + allocation.width) < visible_rect.x) ||
-+ ((allocation.y + allocation.height) < visible_rect.y) ||
-+ (allocation.x > (visible_rect.x + visible_rect.width)) ||
-+ (allocation.y > (visible_rect.y + visible_rect.height))) {
-+ return_value = FALSE;
-+ }
-+ } else {
-+ /* Check whether the widget has been placed off the screen.
-+ * The widget may be MAPPED as when toolbar items do not
-+ * fit on the toolbar.
-+ */
-+ if (allocation.x + allocation.width <= 0 &&
-+ allocation.y + allocation.height <= 0) {
-+ return_value = FALSE;
-+ }
-+ }
-+ return return_value;
- }
-
--static GType
--eel_canvas_accessible_get_type (void)
-+static AtkStateSet *
-+eel_canvas_accessible_ref_state_set (AtkObject *accessible)
- {
-- static GType type = 0;
-+ GtkWidget *widget;
-+ AtkStateSet *state_set;
-
-- if (!type)
-- {
-- AtkObjectFactory *factory;
-- GType parent_atk_type;
-- GTypeQuery query;
-- GTypeInfo tinfo = { 0 };
-+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
-+ state_set = ATK_OBJECT_CLASS (accessible_parent_class)->ref_state_set (accessible);
-
-- factory = atk_registry_get_factory (atk_get_default_registry(),
-- GTK_TYPE_WIDGET);
-- if (!factory)
-- {
-- return G_TYPE_INVALID;
-+ if (widget == NULL) {
-+ atk_state_set_add_state (state_set, ATK_STATE_DEFUNCT);
-+ } else {
-+ if (gtk_widget_is_sensitive (widget)) {
-+ atk_state_set_add_state (state_set, ATK_STATE_SENSITIVE);
-+ atk_state_set_add_state (state_set, ATK_STATE_ENABLED);
- }
-- parent_atk_type = atk_object_factory_get_accessible_type (factory);
-- if (!parent_atk_type)
-- {
-- return G_TYPE_INVALID;
-+
-+ if (gtk_widget_get_can_focus (widget)) {
-+ atk_state_set_add_state (state_set, ATK_STATE_FOCUSABLE);
-+ }
-+ /*
-+ * We do not currently generate notifications when an ATK object
-+ * corresponding to a GtkWidget changes visibility by being scrolled
-+ * on or off the screen. The testcase for this is the main window
-+ * of the testgtk application in which a set of buttons in a GtkVBox
-+ * is in a scrolled window with a viewport.
-+ *
-+ * To generate the notifications we would need to do the following:
-+ * 1) Find the GtkViewport among the ancestors of the objects
-+ * 2) Create an accessible for the viewport
-+ * 3) Connect to the value-changed signal on the viewport
-+ * 4) When the signal is received we need to traverse the children
-+ * of the viewport and check whether the children are visible or not
-+ * visible; we may want to restrict this to the widgets for which
-+ * accessible objects have been created.
-+ * 5) We probably need to store a variable on_screen in the
-+ * GtkWidgetAccessible data structure so we can determine whether
-+ * the value has changed.
-+ */
-+ if (gtk_widget_get_visible (widget)) {
-+ atk_state_set_add_state (state_set, ATK_STATE_VISIBLE);
-+
-+ if (eel_canvas_accessible_on_screen (widget) &&
-+ gtk_widget_get_mapped (widget) &&
-+ eel_canvas_accessible_all_parents_visible (widget)) {
-+ atk_state_set_add_state (state_set, ATK_STATE_SHOWING);
-+ }
-+ }
-+
-+ if (gtk_widget_has_focus (widget)) {
-+ AtkObject *focus_obj;
-+
-+ focus_obj = g_object_get_data (G_OBJECT (accessible), "gail-focus-object");
-+ if (focus_obj == NULL) {
-+ atk_state_set_add_state (state_set, ATK_STATE_FOCUSED);
-+ }
-+ }
-+
-+ if (gtk_widget_has_default (widget)) {
-+ atk_state_set_add_state (state_set, ATK_STATE_DEFAULT);
- }
-- g_type_query (parent_atk_type, &query);
-- tinfo.class_init = (GClassInitFunc) eel_canvas_accessible_class_init;
-- tinfo.class_size = query.class_size;
-- tinfo.instance_size = query.instance_size;
-- type = g_type_register_static (parent_atk_type,
-- "EelCanvasAccessibility",
-- &tinfo, 0);
- }
-- return type;
-+ return state_set;
-+}
-+
-+static void
-+eel_canvas_accessible_class_init (EelCanvasAccessibleClass *klass)
-+{
-+ AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
-+
-+ accessible_parent_class = g_type_class_peek_parent (klass);
-+
-+ atk_class->initialize = eel_canvas_accessible_initialize;
-+ atk_class->get_n_children = eel_canvas_accessible_get_n_children;
-+ atk_class->ref_child = eel_canvas_accessible_ref_child;
-+ /* below adapted from gtkwidgetaccessible.c */
-+ atk_class->ref_state_set = eel_canvas_accessible_ref_state_set;
-+}
-+
-+static void
-+eel_canvas_accessible_get_extents (AtkComponent *component,
-+ gint *x,
-+ gint *y,
-+ gint *width,
-+ gint *height,
-+ AtkCoordType coord_type)
-+{
-+ GdkWindow *window;
-+ gint x_window, y_window;
-+ gint x_toplevel, y_toplevel;
-+ GtkWidget *widget;
-+ GtkAllocation allocation;
-+
-+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (component));
-+
-+ if (widget == NULL) {
-+ return;
-+ }
-+
-+ gtk_widget_get_allocation (widget, &allocation);
-+ *width = allocation.width;
-+ *height = allocation.height;
-+
-+ if (!eel_canvas_accessible_on_screen (widget) ||
-+ !gtk_widget_is_drawable (widget)) {
-+ *x = G_MININT;
-+ *y = G_MININT;
-+
-+ return;
-+ }
-+
-+ if (gtk_widget_get_parent (widget)) {
-+ *x = allocation.x;
-+ *y = allocation.y;
-+ window = gtk_widget_get_parent_window (widget);
-+ } else {
-+ *x = 0;
-+ *y = 0;
-+ window = gtk_widget_get_window (widget);
-+ }
-+
-+ gdk_window_get_origin (window, &x_window, &y_window);
-+ *x += x_window;
-+ *y += y_window;
-+
-+ if (coord_type == ATK_XY_WINDOW) {
-+ window = gdk_window_get_toplevel (gtk_widget_get_window (widget));
-+ gdk_window_get_origin (window, &x_toplevel, &y_toplevel);
-+
-+ *x -= x_toplevel;
-+ *y -= y_toplevel;
-+ }
- }
-
-+static void
-+eel_canvas_accessible_get_size (AtkComponent *component,
-+ gint *width,
-+ gint *height)
-+{
-+ GtkWidget *widget;
-+ GtkAllocation allocation;
-+
-+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (component));
-+
-+ if (widget == NULL) {
-+ return;
-+ }
-+
-+ gtk_widget_get_allocation (widget, &allocation);
-+
-+ *width = allocation.width;
-+ *height = allocation.height;
-+}
-+
-+static void
-+eel_canvas_accessible_component_init(gpointer iface, gpointer data)
-+{
-+ AtkComponentIface *component;
-+
-+ g_assert (G_TYPE_FROM_INTERFACE(iface) == ATK_TYPE_COMPONENT);
-+
-+ component = iface;
-+ component->get_extents = eel_canvas_accessible_get_extents;
-+ component->get_size = eel_canvas_accessible_get_size;
-+}
-+
-+static void
-+eel_canvas_accessible_init (EelCanvasAccessible *accessible)
-+{
-+ }
-+
-+G_DEFINE_TYPE_WITH_CODE (EelCanvasAccessible, eel_canvas_accessible, GTK_TYPE_ACCESSIBLE,
-+ G_IMPLEMENT_INTERFACE (ATK_TYPE_COMPONENT, eel_canvas_accessible_component_init))
-+
- static AtkObject *
- eel_canvas_accessible_create (GObject *for_object)
- {
-@@ -2174,6 +2451,7 @@ eel_canvas_class_init (EelCanvasClass *klass)
- widget_class->leave_notify_event = eel_canvas_crossing;
- widget_class->focus_in_event = eel_canvas_focus_in;
- widget_class->focus_out_event = eel_canvas_focus_out;
-+ widget_class->get_accessible = eel_canvas_get_accessible;
-
- klass->draw_background = eel_canvas_draw_background;
- klass->request_update = eel_canvas_request_update_real;
-@@ -3034,6 +3312,12 @@ eel_canvas_focus_in (GtkWidget *widget, GdkEventFocus *event)
- return FALSE;
- }
-
-+static AtkObject *
-+eel_canvas_get_accessible (GtkWidget *widget)
-+{
-+ return atk_gobject_accessible_for_object (G_OBJECT (widget));
-+}
-+
- /* Focus out handler for the canvas */
- static gint
- eel_canvas_focus_out (GtkWidget *widget, GdkEventFocus *event)
-diff --git a/eel/eel-canvas.h b/eel/eel-canvas.h
-index 8f49141..7e4d518 100644
---- a/eel/eel-canvas.h
-+++ b/eel/eel-canvas.h
-@@ -536,7 +536,20 @@ extern "C" {
- */
- int eel_canvas_get_color (EelCanvas *canvas, const char *spec, GdkColor *color);
-
-+ /* Accessible implementation */
-+ GType eel_canvas_accessible_get_type(void);
-
-+ typedef struct _EelCanvasAccessible EelCanvasAccessible;
-+ struct _EelCanvasAccessible
-+ {
-+ GtkAccessible parent;
-+ };
-+
-+ typedef struct _EelCanvasAccessibleClass EelCanvasAccessibleClass;
-+ struct _EelCanvasAccessibleClass
-+ {
-+ GtkAccessibleClass parent_class;
-+ };
- #ifdef __cplusplus
- }
- #endif
-diff --git a/libcaja-private/caja-icon-canvas-item.c b/libcaja-private/caja-icon-canvas-item.c
-index 58ff44f..b6f894c 100644
---- a/libcaja-private/caja-icon-canvas-item.c
-+++ b/libcaja-private/caja-icon-canvas-item.c
-@@ -374,8 +374,10 @@ caja_icon_canvas_item_set_property (GObject *object,
- {
- CajaIconCanvasItem *item;
- CajaIconCanvasItemDetails *details;
-+ AtkObject *accessible;
-
- item = CAJA_ICON_CANVAS_ITEM (object);
-+ accessible = atk_gobject_accessible_for_object (G_OBJECT (item));
- details = item->details;
-
- switch (property_id)
-@@ -392,11 +394,8 @@ caja_icon_canvas_item_set_property (GObject *object,
- details->editable_text = g_strdup (g_value_get_string (value));
- if (details->text_util)
- {
-- AtkObject *accessible;
--
- gail_text_util_text_setup (details->text_util,
- details->editable_text);
-- accessible = atk_gobject_accessible_for_object (G_OBJECT (item));
- g_object_notify (G_OBJECT(accessible), "accessible-name");
- }
-
-@@ -433,6 +432,10 @@ caja_icon_canvas_item_set_property (GObject *object,
- }
- details->is_highlighted_for_selection = g_value_get_boolean (value);
- caja_icon_canvas_item_invalidate_label_size (item);
-+
-+ atk_object_notify_state_change (accessible, ATK_STATE_SELECTED,
-+ details->is_highlighted_for_selection);
-+
- break;
-
- case PROP_HIGHLIGHTED_AS_KEYBOARD_FOCUS:
-@@ -444,8 +447,7 @@ caja_icon_canvas_item_set_property (GObject *object,
-
- if (details->is_highlighted_as_keyboard_focus)
- {
-- AtkObject *atk_object = atk_gobject_accessible_for_object (object);
-- atk_focus_tracker_notify (atk_object);
-+ atk_focus_tracker_notify (accessible);
- }
- break;
-
-
diff --git a/debian/patches/series b/debian/patches/series
index e043cdd..74a7d8f 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,2 @@
0001_fix-desktop-icon-size.patch
0002_dont-start-desktop-outside-of-MATE-sessions.patch
-0003_orca-not-selected.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mate/caja.git
More information about the pkg-mate-commits
mailing list