mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-06 16:50:11 +00:00
GtkTextViewAccessible: get rid of GailTextUtil usage
Instead, use the newly added GtkTextBuffer functions.
This commit is contained in:
parent
aa291863bb
commit
5f6ed88b7a
@ -75,7 +75,6 @@ gtk_text_view_accessible_finalize (GObject *object)
|
||||
{
|
||||
GtkTextViewAccessible *text_view = GTK_TEXT_VIEW_ACCESSIBLE (object);
|
||||
|
||||
g_object_unref (text_view->textutil);
|
||||
if (text_view->insert_notify_handler)
|
||||
g_source_remove (text_view->insert_notify_handler);
|
||||
|
||||
@ -144,7 +143,6 @@ gtk_text_view_accessible_class_init (GtkTextViewAccessibleClass *klass)
|
||||
static void
|
||||
gtk_text_view_accessible_init (GtkTextViewAccessible *accessible)
|
||||
{
|
||||
accessible->textutil = NULL;
|
||||
accessible->signal_name = NULL;
|
||||
accessible->previous_insert_offset = -1;
|
||||
accessible->previous_selection_bound = -1;
|
||||
@ -159,12 +157,6 @@ setup_buffer (GtkTextView *view,
|
||||
|
||||
buffer = gtk_text_view_get_buffer (view);
|
||||
|
||||
if (accessible->textutil)
|
||||
g_object_unref (accessible->textutil);
|
||||
|
||||
accessible->textutil = gail_text_util_new ();
|
||||
gail_text_util_buffer_setup (accessible->textutil, buffer);
|
||||
|
||||
/* Set up signal callbacks */
|
||||
g_signal_connect_data (buffer, "insert-text",
|
||||
(GCallback) insert_text_cb, view, NULL, 0);
|
||||
@ -199,32 +191,6 @@ gtk_text_view_accessible_get_text (AtkText *text,
|
||||
return gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
|
||||
}
|
||||
|
||||
static gchar *
|
||||
get_text_near_offset (AtkText *text,
|
||||
GailOffsetType function,
|
||||
AtkTextBoundary boundary_type,
|
||||
gint offset,
|
||||
gint *start_offset,
|
||||
gint *end_offset)
|
||||
{
|
||||
GtkTextView *view;
|
||||
gpointer layout = NULL;
|
||||
|
||||
view = GTK_TEXT_VIEW (gtk_accessible_get_widget (GTK_ACCESSIBLE (text)));
|
||||
|
||||
/*
|
||||
* Pass the GtkTextView to the function gail_text_util_get_text()
|
||||
* so it can find the start and end of the current line on the display.
|
||||
*/
|
||||
if (boundary_type == ATK_TEXT_BOUNDARY_LINE_START ||
|
||||
boundary_type == ATK_TEXT_BOUNDARY_LINE_END)
|
||||
layout = view;
|
||||
|
||||
return gail_text_util_get_text (GTK_TEXT_VIEW_ACCESSIBLE (text)->textutil, layout,
|
||||
function, boundary_type, offset,
|
||||
start_offset, end_offset);
|
||||
}
|
||||
|
||||
static gchar *
|
||||
gtk_text_view_accessible_get_text_after_offset (AtkText *text,
|
||||
gint offset,
|
||||
@ -233,14 +199,21 @@ gtk_text_view_accessible_get_text_after_offset (AtkText *text,
|
||||
gint *end_offset)
|
||||
{
|
||||
GtkWidget *widget;
|
||||
GtkTextBuffer *buffer;
|
||||
GtkTextIter pos;
|
||||
GtkTextIter start, end;
|
||||
|
||||
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
|
||||
if (widget == NULL)
|
||||
return NULL;
|
||||
|
||||
return get_text_near_offset (text, GAIL_AFTER_OFFSET,
|
||||
boundary_type, offset,
|
||||
start_offset, end_offset);
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
|
||||
gtk_text_buffer_get_iter_at_offset (buffer, &pos, offset);
|
||||
_gtk_text_buffer_get_text_after (buffer, boundary_type,
|
||||
&pos, &start, &end);
|
||||
*start_offset = gtk_text_iter_get_offset (&start);
|
||||
*end_offset = gtk_text_iter_get_offset (&end);
|
||||
return gtk_text_buffer_get_slice (buffer, &start, &end, FALSE);
|
||||
}
|
||||
|
||||
static gchar *
|
||||
@ -251,14 +224,21 @@ gtk_text_view_accessible_get_text_at_offset (AtkText *text,
|
||||
gint *end_offset)
|
||||
{
|
||||
GtkWidget *widget;
|
||||
GtkTextBuffer *buffer;
|
||||
GtkTextIter pos;
|
||||
GtkTextIter start, end;
|
||||
|
||||
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
|
||||
if (widget == NULL)
|
||||
return NULL;
|
||||
|
||||
return get_text_near_offset (text, GAIL_AT_OFFSET,
|
||||
boundary_type, offset,
|
||||
start_offset, end_offset);
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
|
||||
gtk_text_buffer_get_iter_at_offset (buffer, &pos, offset);
|
||||
_gtk_text_buffer_get_text_at (buffer, boundary_type,
|
||||
&pos, &start, &end);
|
||||
*start_offset = gtk_text_iter_get_offset (&start);
|
||||
*end_offset = gtk_text_iter_get_offset (&end);
|
||||
return gtk_text_buffer_get_slice (buffer, &start, &end, FALSE);
|
||||
}
|
||||
|
||||
static gchar *
|
||||
@ -269,14 +249,21 @@ gtk_text_view_accessible_get_text_before_offset (AtkText *text,
|
||||
gint *end_offset)
|
||||
{
|
||||
GtkWidget *widget;
|
||||
GtkTextBuffer *buffer;
|
||||
GtkTextIter pos;
|
||||
GtkTextIter start, end;
|
||||
|
||||
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
|
||||
if (widget == NULL)
|
||||
return NULL;
|
||||
|
||||
return get_text_near_offset (text, GAIL_BEFORE_OFFSET,
|
||||
boundary_type, offset,
|
||||
start_offset, end_offset);
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
|
||||
gtk_text_buffer_get_iter_at_offset (buffer, &pos, offset);
|
||||
_gtk_text_buffer_get_text_before (buffer, boundary_type,
|
||||
&pos, &start, &end);
|
||||
*start_offset = gtk_text_iter_get_offset (&start);
|
||||
*end_offset = gtk_text_iter_get_offset (&end);
|
||||
return gtk_text_buffer_get_slice (buffer, &start, &end, FALSE);
|
||||
}
|
||||
|
||||
static gunichar
|
||||
@ -1374,6 +1361,7 @@ static gint
|
||||
insert_idle_handler (gpointer data)
|
||||
{
|
||||
GtkTextViewAccessible *accessible = data;
|
||||
GtkWidget *widget;
|
||||
GtkTextBuffer *buffer;
|
||||
|
||||
g_signal_emit_by_name (data,
|
||||
@ -1384,7 +1372,8 @@ insert_idle_handler (gpointer data)
|
||||
accessible->position = 0;
|
||||
accessible->length = 0;
|
||||
|
||||
buffer = accessible->textutil->buffer;
|
||||
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
|
||||
if (accessible->insert_notify_handler)
|
||||
{
|
||||
/*
|
||||
@ -1401,16 +1390,22 @@ insert_idle_handler (gpointer data)
|
||||
static gint
|
||||
gail_streamable_content_get_n_mime_types (AtkStreamableContent *streamable)
|
||||
{
|
||||
GtkWidget *widget;
|
||||
GtkTextBuffer *buffer;
|
||||
gint n_mime_types = 0;
|
||||
|
||||
if (GTK_TEXT_VIEW_ACCESSIBLE (streamable)->textutil)
|
||||
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (streamable));
|
||||
if (widget == NULL)
|
||||
return 0;
|
||||
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
|
||||
if (buffer)
|
||||
{
|
||||
gint i;
|
||||
gboolean advertises_plaintext = FALSE;
|
||||
GdkAtom *atoms;
|
||||
|
||||
atoms = gtk_text_buffer_get_serialize_formats (GTK_TEXT_VIEW_ACCESSIBLE (streamable)->textutil->buffer,
|
||||
&n_mime_types);
|
||||
atoms = gtk_text_buffer_get_serialize_formats (buffer, &n_mime_types);
|
||||
for (i = 0; i < n_mime_types-1; ++i)
|
||||
if (!strcmp ("text/plain", gdk_atom_name (atoms[i])))
|
||||
advertises_plaintext = TRUE;
|
||||
@ -1425,13 +1420,20 @@ static const gchar *
|
||||
gail_streamable_content_get_mime_type (AtkStreamableContent *streamable,
|
||||
gint i)
|
||||
{
|
||||
if (GTK_TEXT_VIEW_ACCESSIBLE (streamable)->textutil)
|
||||
GtkWidget *widget;
|
||||
GtkTextBuffer *buffer;
|
||||
|
||||
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (streamable));
|
||||
if (widget == NULL)
|
||||
return 0;
|
||||
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
|
||||
if (buffer)
|
||||
{
|
||||
gint n_mime_types = 0;
|
||||
GdkAtom *atoms;
|
||||
|
||||
atoms = gtk_text_buffer_get_serialize_formats (GTK_TEXT_VIEW_ACCESSIBLE (streamable)->textutil->buffer,
|
||||
&n_mime_types);
|
||||
atoms = gtk_text_buffer_get_serialize_formats (buffer, &n_mime_types);
|
||||
if (i < n_mime_types)
|
||||
return gdk_atom_name (atoms [i]);
|
||||
else if (i == n_mime_types)
|
||||
@ -1445,21 +1447,26 @@ static GIOChannel *
|
||||
gail_streamable_content_get_stream (AtkStreamableContent *streamable,
|
||||
const gchar *mime_type)
|
||||
{
|
||||
GtkWidget *widget;
|
||||
GtkTextBuffer *buffer;
|
||||
gint i, n_mime_types = 0;
|
||||
GdkAtom *atoms;
|
||||
|
||||
if (!GTK_TEXT_VIEW_ACCESSIBLE (streamable)->textutil)
|
||||
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (streamable));
|
||||
if (widget == NULL)
|
||||
return 0;
|
||||
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
|
||||
if (!buffer)
|
||||
return NULL;
|
||||
|
||||
atoms = gtk_text_buffer_get_serialize_formats (GTK_TEXT_VIEW_ACCESSIBLE (streamable)->textutil->buffer,
|
||||
&n_mime_types);
|
||||
atoms = gtk_text_buffer_get_serialize_formats (buffer, &n_mime_types);
|
||||
|
||||
for (i = 0; i < n_mime_types; ++i)
|
||||
{
|
||||
if (!strcmp ("text/plain", mime_type) ||
|
||||
!strcmp (gdk_atom_name (atoms[i]), mime_type))
|
||||
{
|
||||
GtkTextBuffer *buffer;
|
||||
guint8 *cbuf;
|
||||
GError *err = NULL;
|
||||
gsize len, written;
|
||||
@ -1468,7 +1475,6 @@ gail_streamable_content_get_stream (AtkStreamableContent *streamable,
|
||||
GIOChannel *gio = NULL;
|
||||
int fd;
|
||||
|
||||
buffer = GTK_TEXT_VIEW_ACCESSIBLE (streamable)->textutil->buffer;
|
||||
gtk_text_buffer_get_iter_at_offset (buffer, &start, 0);
|
||||
gtk_text_buffer_get_iter_at_offset (buffer, &end, -1);
|
||||
if (!strcmp ("text/plain", mime_type))
|
||||
|
@ -21,7 +21,6 @@
|
||||
#define __GTK_TEXT_VIEW_ACCESSIBLE_H__
|
||||
|
||||
#include "gailcontainer.h"
|
||||
#include "gailtextutil.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
@ -39,7 +38,6 @@ struct _GtkTextViewAccessible
|
||||
{
|
||||
GailContainer parent;
|
||||
|
||||
GailTextUtil *textutil;
|
||||
gint previous_insert_offset;
|
||||
gint previous_selection_bound;
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user