diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index af5f5c5c3..72fd1dee0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -94,7 +94,7 @@ ubuntu:devel:
libgnome-autoar-0-dev
gobject-introspection libxml2-dev
libtracker-control-2.0-dev desktop-file-utils libgexiv2-dev
- libgail-3-dev libtracker-sparql-2.0-dev
+ libtracker-sparql-2.0-dev
libgirepository1.0-dev
<<: *distro_test
only:
diff --git a/eel/eel-accessibility.c b/eel/eel-accessibility.c
deleted file mode 100644
index 2f4595382..000000000
--- a/eel/eel-accessibility.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/* eel-accessibility.h - Utility functions for accessibility
- *
- * Copyright (C) 2002 Anders Carlsson, Sun Microsystems, Inc.
- *
- * The Eel Library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * The Eel 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with the Eel Library; see the file COPYING.LIB. If not,
- * see .
- *
- * Authors:
- * Anders Carlsson
- * Michael Meeks
- */
-#include
-#include
-#include
-#include
-
-void
-eel_accessibility_set_up_label_widget_relation (GtkWidget *label,
- GtkWidget *widget)
-{
- AtkObject *atk_widget, *atk_label;
-
- atk_label = gtk_widget_get_accessible (label);
- atk_widget = gtk_widget_get_accessible (widget);
-
- /* Create the label -> widget relation */
- atk_object_add_relationship (atk_label, ATK_RELATION_LABEL_FOR, atk_widget);
-
- /* Create the widget -> label relation */
- atk_object_add_relationship (atk_widget, ATK_RELATION_LABELLED_BY, atk_label);
-}
-
-static GailTextUtil *
-get_simple_text (gpointer object)
-{
- GObject *gobject;
- EelAccessibleTextIface *aif;
-
- if (GTK_IS_ACCESSIBLE (object))
- {
- gobject = G_OBJECT (gtk_accessible_get_widget (GTK_ACCESSIBLE (object)));
- }
- else
- {
- gobject = atk_gobject_accessible_get_object (object);
- }
-
- if (!gobject)
- {
- return NULL;
- }
-
- aif = EEL_ACCESSIBLE_TEXT_GET_IFACE (gobject);
- if (!aif)
- {
- g_warning ("No accessible text inferface on '%s'",
- g_type_name_from_instance ((gpointer) gobject));
- }
- else if (aif->get_text)
- {
- return aif->get_text (gobject);
- }
-
- return NULL;
-}
-
-char *
-eel_accessibility_text_get_text (AtkText *text,
- gint start_pos,
- gint end_pos)
-{
- GailTextUtil *util = get_simple_text (text);
- g_return_val_if_fail (util != NULL, NULL);
-
- return gail_text_util_get_substring (util, start_pos, end_pos);
-}
-
-gunichar
-eel_accessibility_text_get_character_at_offset (AtkText *text,
- gint offset)
-{
- char *txt, *index;
- gint sucks1 = 0, sucks2 = -1;
- gunichar c;
- GailTextUtil *util = get_simple_text (text);
- g_return_val_if_fail (util != NULL, 0);
-
- txt = gail_text_util_get_substring (util, sucks1, sucks2);
-
- index = g_utf8_offset_to_pointer (txt, offset);
- c = g_utf8_get_char (index);
- g_free (txt);
-
- return c;
-}
-
-char *
-eel_accessibility_text_get_text_before_offset (AtkText *text,
- gint offset,
- AtkTextBoundary boundary_type,
- gint *start_offset,
- gint *end_offset)
-{
- GailTextUtil *util = get_simple_text (text);
- g_return_val_if_fail (util != NULL, NULL);
-
- return gail_text_util_get_text (
- util, NULL, GAIL_BEFORE_OFFSET,
- boundary_type, offset, start_offset, end_offset);
-}
-
-char *
-eel_accessibility_text_get_text_at_offset (AtkText *text,
- gint offset,
- AtkTextBoundary boundary_type,
- gint *start_offset,
- gint *end_offset)
-{
- GailTextUtil *util = get_simple_text (text);
- g_return_val_if_fail (util != NULL, NULL);
-
- return gail_text_util_get_text (
- util, NULL, GAIL_AT_OFFSET,
- boundary_type, offset, start_offset, end_offset);
-}
-
-gchar *
-eel_accessibility_text_get_text_after_offset (AtkText *text,
- gint offset,
- AtkTextBoundary boundary_type,
- gint *start_offset,
- gint *end_offset)
-{
- GailTextUtil *util = get_simple_text (text);
- g_return_val_if_fail (util != NULL, NULL);
-
- return gail_text_util_get_text (
- util, NULL, GAIL_AFTER_OFFSET,
- boundary_type, offset, start_offset, end_offset);
-}
-
-gint
-eel_accessibility_text_get_character_count (AtkText *text)
-{
- GailTextUtil *util = get_simple_text (text);
- g_return_val_if_fail (util != NULL, -1);
-
- return gtk_text_buffer_get_char_count (util->buffer);
-}
-
-GType
-eel_accessible_text_get_type (void)
-{
- static GType type = 0;
-
- if (!type)
- {
- const GTypeInfo tinfo =
- {
- sizeof (AtkTextIface),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) NULL,
- (GClassFinalizeFunc) NULL
- };
-
- type = g_type_register_static (
- G_TYPE_INTERFACE, "EelAccessibleText", &tinfo, 0);
- }
-
- return type;
-}
diff --git a/eel/eel-accessibility.h b/eel/eel-accessibility.h
deleted file mode 100644
index 740719ded..000000000
--- a/eel/eel-accessibility.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* eel-accessibility.h - Utility functions for accessibility
-
- Copyright (C) 2002 Anders Carlsson
-
- The Eel Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- The Eel 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the Eel Library; see the file COPYING.LIB. If not,
- see .
-
- Authors: Anders Carlsson
-*/
-
-#pragma once
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-void eel_accessibility_set_up_label_widget_relation (GtkWidget *label, GtkWidget *widget);
-
-char* eel_accessibility_text_get_text (AtkText *text,
- gint start_pos,
- gint end_pos);
-gunichar eel_accessibility_text_get_character_at_offset
- (AtkText *text,
- gint offset);
-char* eel_accessibility_text_get_text_before_offset
- (AtkText *text,
- gint offset,
- AtkTextBoundary boundary_type,
- gint *start_offset,
- gint *end_offset);
-char* eel_accessibility_text_get_text_at_offset
- (AtkText *text,
- gint offset,
- AtkTextBoundary boundary_type,
- gint *start_offset,
- gint *end_offset);
-char* eel_accessibility_text_get_text_after_offset
- (AtkText *text,
- gint offset,
- AtkTextBoundary boundary_type,
- gint *start_offset,
- gint *end_offset);
-gint eel_accessibility_text_get_character_count
- (AtkText *text);
-
-
-#define EEL_TYPE_ACCESSIBLE_TEXT (eel_accessible_text_get_type ())
-#define EEL_IS_ACCESSIBLE_TEXT(obj) G_TYPE_CHECK_INSTANCE_TYPE ((obj), EEL_TYPE_ACCESSIBLE_TEXT)
-#define EEL_ACCESSIBLE_TEXT(obj) G_TYPE_CHECK_INSTANCE_CAST ((obj), EEL_TYPE_ACCESSIBLE_TEXT, EelAccessibleText)
-#define EEL_ACCESSIBLE_TEXT_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), EEL_TYPE_ACCESSIBLE_TEXT, EelAccessibleTextIface))
-
-/* Instead of implementing the AtkText interface, implement this */
-typedef struct _EelAccessibleText EelAccessibleText;
-
-typedef struct {
- GTypeInterface parent;
-
- GailTextUtil *(*get_text) (GObject *text);
- PangoLayout *(*get_layout) (GObject *text);
-} EelAccessibleTextIface;
-
-GType eel_accessible_text_get_type (void);
\ No newline at end of file
diff --git a/eel/meson.build b/eel/meson.build
index ba06203d4..5437bdc4c 100644
--- a/eel/meson.build
+++ b/eel/meson.build
@@ -1,6 +1,4 @@
libeel_2_sources = [
- 'eel-accessibility.h',
- 'eel-accessibility.c',
'eel-art-extensions.h',
'eel-art-extensions.c',
'eel-canvas.h',
@@ -27,7 +25,6 @@ libeel_2_sources = [
libeel_2_deps = [
config_h,
- gail,
glib,
gtk,
libm,
diff --git a/meson.build b/meson.build
index b68cf04ac..50f8134ca 100644
--- a/meson.build
+++ b/meson.build
@@ -69,7 +69,6 @@ libgd_dep = libgd.get_variable('libgd_dep')
libm = cc.find_library('m')
-gail = dependency('gail-3.0')
if get_option('extensions')
gexiv = dependency('gexiv2', version: '>= 0.10.0')
endif
diff --git a/src/nautilus-canvas-container.c b/src/nautilus-canvas-container.c
index 3cb4b9b07..ea212c5a0 100644
--- a/src/nautilus-canvas-container.c
+++ b/src/nautilus-canvas-container.c
@@ -25,7 +25,6 @@
#include "nautilus-canvas-container.h"
#include
-#include
#include
#include
#include
diff --git a/src/nautilus-canvas-item.c b/src/nautilus-canvas-item.c
index 7f90d1cb3..ba0d5e793 100644
--- a/src/nautilus-canvas-item.c
+++ b/src/nautilus-canvas-item.c
@@ -31,7 +31,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -131,8 +130,7 @@ struct NautilusCanvasItemDetails
GdkWindow *cursor_window;
- /* Accessibility bits */
- GailTextUtil *text_util;
+ GString *text;
};
/* Object argument IDs. */
@@ -155,12 +153,9 @@ typedef enum
TOP_SIDE
} RectangleSide;
-static void nautilus_canvas_item_text_interface_init (EelAccessibleTextIface *iface);
static GType nautilus_canvas_item_accessible_factory_get_type (void);
-G_DEFINE_TYPE_WITH_CODE (NautilusCanvasItem, nautilus_canvas_item, EEL_TYPE_CANVAS_ITEM,
- G_IMPLEMENT_INTERFACE (EEL_TYPE_ACCESSIBLE_TEXT,
- nautilus_canvas_item_text_interface_init));
+G_DEFINE_TYPE (NautilusCanvasItem, nautilus_canvas_item, EEL_TYPE_CANVAS_ITEM)
/* private */
static void get_icon_rectangle (NautilusCanvasItem *item,
@@ -199,9 +194,10 @@ nautilus_canvas_item_finalize (GObject *object)
g_object_unref (details->pixbuf);
}
- if (details->text_util != NULL)
+ if (details->text != NULL)
{
- g_object_unref (details->text_util);
+ g_string_free (details->text, TRUE);
+ details->text = NULL;
}
g_free (details->editable_text);
@@ -295,10 +291,10 @@ nautilus_canvas_item_set_property (GObject *object,
is_rename = details->editable_text != NULL;
g_free (details->editable_text);
details->editable_text = g_strdup (g_value_get_string (value));
- if (details->text_util)
+ if (details->text)
{
- gail_text_util_text_setup (details->text_util,
- details->editable_text);
+ details->text = g_string_assign (details->text, details->editable_text);
+
if (is_rename)
g_object_notify (G_OBJECT (accessible), "accessible-name");
}
@@ -1901,18 +1897,6 @@ nautilus_canvas_item_class_init (NautilusCanvasItemClass *class)
g_type_class_add_private (class, sizeof (NautilusCanvasItemDetails));
}
-static GailTextUtil *
-nautilus_canvas_item_get_text (GObject *text)
-{
- return NAUTILUS_CANVAS_ITEM (text)->details->text_util;
-}
-
-static void
-nautilus_canvas_item_text_interface_init (EelAccessibleTextIface *iface)
-{
- iface->get_text = nautilus_canvas_item_get_text;
-}
-
/* ============================= a11y interfaces =========================== */
static const char *nautilus_canvas_item_accessible_action_names[] =
@@ -2549,15 +2533,53 @@ nautilus_canvas_item_accessible_get_character_extents (AtkText *text,
*height = PANGO_PIXELS (rect.height);
}
+static char *
+nautilus_canvas_item_accessible_text_get_text (AtkText *text,
+ gint start_pos,
+ gint end_pos)
+{
+ GObject *object;
+ NautilusCanvasItem *item;
+
+ object = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (text));
+ item = NAUTILUS_CANVAS_ITEM (object);
+
+ return g_utf8_substring (item->details->text->str, start_pos, end_pos);
+}
+
+static gunichar
+nautilus_canvas_item_accessible_text_get_character_at_offset (AtkText *text,
+ gint offset)
+{
+ GObject *object;
+ NautilusCanvasItem *item;
+ gchar *pointer;
+
+ object = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (text));
+ item = NAUTILUS_CANVAS_ITEM (object);
+ pointer = g_utf8_offset_to_pointer (item->details->text->str, offset);
+
+ return g_utf8_get_char (pointer);
+}
+
+static gint
+nautilus_canvas_item_accessible_text_get_character_count (AtkText *text)
+{
+ GObject *object;
+ NautilusCanvasItem *item;
+
+ object = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (text));
+ item = NAUTILUS_CANVAS_ITEM (object);
+
+ return g_utf8_strlen (item->details->text->str, -1);
+}
+
static void
nautilus_canvas_item_accessible_text_interface_init (AtkTextIface *iface)
{
- iface->get_text = eel_accessibility_text_get_text;
- iface->get_character_at_offset = eel_accessibility_text_get_character_at_offset;
- iface->get_text_before_offset = eel_accessibility_text_get_text_before_offset;
- iface->get_text_at_offset = eel_accessibility_text_get_text_at_offset;
- iface->get_text_after_offset = eel_accessibility_text_get_text_after_offset;
- iface->get_character_count = eel_accessibility_text_get_character_count;
+ iface->get_text = nautilus_canvas_item_accessible_text_get_text;
+ iface->get_character_at_offset = nautilus_canvas_item_accessible_text_get_character_at_offset;
+ iface->get_character_count = nautilus_canvas_item_accessible_text_get_character_count;
iface->get_character_extents = nautilus_canvas_item_accessible_get_character_extents;
iface->get_offset_at_point = nautilus_canvas_item_accessible_get_offset_at_point;
}
@@ -2678,26 +2700,20 @@ nautilus_canvas_item_accessible_factory_create_accessible (GObject *for_object)
{
AtkObject *accessible;
NautilusCanvasItem *item;
- GString *item_text;
item = NAUTILUS_CANVAS_ITEM (for_object);
g_assert (item != NULL);
- item_text = g_string_new (NULL);
+ item->details->text = g_string_new (NULL);
if (item->details->editable_text)
{
- g_string_append (item_text, item->details->editable_text);
+ g_string_append (item->details->text, item->details->editable_text);
}
if (item->details->additional_text)
{
- g_string_append (item_text, item->details->additional_text);
+ g_string_append (item->details->text, item->details->additional_text);
}
- item->details->text_util = gail_text_util_new ();
- gail_text_util_text_setup (item->details->text_util,
- item_text->str);
- g_string_free (item_text, TRUE);
-
accessible = g_object_new (nautilus_canvas_item_accessible_get_type (), NULL);
atk_object_initialize (accessible, for_object);
diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
index d239263e2..906e69af0 100644
--- a/src/nautilus-properties-window.c
+++ b/src/nautilus-properties-window.c
@@ -22,7 +22,6 @@
#include "nautilus-properties-window.h"
#include
-#include
#include
#include
#include
@@ -3714,8 +3713,17 @@ add_execute_checkbox_with_label (NautilusPropertiesWindow *window,
a11y_enabled = GTK_IS_ACCESSIBLE (gtk_widget_get_accessible (check_button));
if (a11y_enabled && label_for != NULL)
{
- eel_accessibility_set_up_label_widget_relation (GTK_WIDGET (label_for),
- check_button);
+ AtkObject *atk_widget;
+ AtkObject *atk_label;
+
+ atk_label = gtk_widget_get_accessible (GTK_WIDGET (label_for));
+ atk_widget = gtk_widget_get_accessible (check_button);
+
+ /* Create the label -> widget relation */
+ atk_object_add_relationship (atk_label, ATK_RELATION_LABEL_FOR, atk_widget);
+
+ /* Create the widget -> label relation */
+ atk_object_add_relationship (atk_widget, ATK_RELATION_LABELLED_BY, atk_label);
}
return check_button;