gtktextviewaccessible: update cursor position after text suppression
delete_range_cb is set to be called before the text suppression done by the gtktextlayout (otherwise it does not work properly). But at that point the cursor position is not yet up to date. We thus need to move the accessibility cursor notification to after the actual text suppression, by using another callback. This fixes cursor position in brltty screen reading.
This commit is contained in:
@ -47,6 +47,10 @@ static void delete_range_cb (GtkTextBuffer *buffer,
|
||||
GtkTextIter *arg1,
|
||||
GtkTextIter *arg2,
|
||||
gpointer user_data);
|
||||
static void delete_range_after_cb (GtkTextBuffer *buffer,
|
||||
GtkTextIter *arg1,
|
||||
GtkTextIter *arg2,
|
||||
gpointer user_data);
|
||||
static void mark_set_cb (GtkTextBuffer *buffer,
|
||||
GtkTextIter *arg1,
|
||||
GtkTextMark *arg2,
|
||||
@ -133,6 +137,7 @@ gtk_text_view_accessible_change_buffer (GtkTextViewAccessible *accessible,
|
||||
{
|
||||
g_signal_connect_after (new_buffer, "insert-text", G_CALLBACK (insert_text_cb), accessible);
|
||||
g_signal_connect (new_buffer, "delete-range", G_CALLBACK (delete_range_cb), accessible);
|
||||
g_signal_connect_after (new_buffer, "delete-range", G_CALLBACK (delete_range_after_cb), accessible);
|
||||
g_signal_connect_after (new_buffer, "mark-set", G_CALLBACK (mark_set_cb), accessible);
|
||||
|
||||
g_signal_emit_by_name (accessible,
|
||||
@ -1799,6 +1804,15 @@ delete_range_cb (GtkTextBuffer *buffer,
|
||||
"text-changed::delete",
|
||||
offset,
|
||||
length);
|
||||
}
|
||||
|
||||
static void
|
||||
delete_range_after_cb (GtkTextBuffer *buffer,
|
||||
GtkTextIter *start,
|
||||
GtkTextIter *end,
|
||||
gpointer data)
|
||||
{
|
||||
GtkTextViewAccessible *accessible = data;
|
||||
|
||||
gtk_text_view_accessible_update_cursor (accessible, buffer);
|
||||
}
|
||||
|
Reference in New Issue
Block a user