Bug#870631: (entry_text_shifted) wrong coordinates given to at-spi layer from GTK3 entries

Samuel Thibault sthibault at debian.org
Sun Oct 15 20:14:38 UTC 2017


Control: tags -1 + fixed-upstream patch

Hello,

Alex ARNAUD, on jeu. 03 août 2017 17:53:31 +0200, wrote:
> Forwarded: https://bugzilla.gnome.org/show_bug.cgi?id=784509

Upstream commited a fix for this bug.

Just wondering: considering that it's just a few lines (as attached to
this mail) and the following usability impact:

> It is blocking for any a11y tool making these events accessible, like software magnifiers such as gnome3 zoom or compiz's ezoom with focus tracking.
> result is unreadable by visually impaired people.

how do you feel about including the patch in sid already, and about
including it stretch or even jessie?

Samuel
-------------- next part --------------
commit 9af088693a5087a4d82fe14305d67444755b0fcc
Author: Samuel Thibault <samuel.thibault at ens-lyon.org>
Date:   Thu Oct 5 15:49:00 2017 +0000

    a11y/entry: Fix text coords not adjusted for alloc
    
    What is missing is the "allocation" part of x/y coordinates. Since
    gtk_entry_realize doesn't call gtk_widget_set_window(priv->text_area),
    the coordinates returned by gdk_window_get_origin don't include it.
    
    This patch fixes this.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=784509

diff --git a/gtk/a11y/gtkentryaccessible.c b/gtk/a11y/gtkentryaccessible.c
index abbaef8e9e..9519b091c5 100644
--- a/gtk/a11y/gtkentryaccessible.c
+++ b/gtk/a11y/gtkentryaccessible.c
@@ -971,11 +971,14 @@ gtk_entry_accessible_get_character_extents (AtkText      *text,
   pango_layout_index_to_pos (gtk_entry_get_layout (entry), index, &char_rect);
   pango_extents_to_pixels (&char_rect, NULL);
 
+  GtkAllocation allocation;
+  gtk_widget_get_allocation (widget, &allocation);
+
   window = gtk_widget_get_window (widget);
   gdk_window_get_origin (window, &x_window, &y_window);
 
-  *x = x_window + x_layout + char_rect.x;
-  *y = y_window + y_layout + char_rect.y;
+  *x = x_window + allocation.x + x_layout + char_rect.x;
+  *y = y_window + allocation.y + y_layout + char_rect.y;
   *width = char_rect.width;
   *height = char_rect.height;
 


More information about the pkg-gnome-maintainers mailing list