forked from AuroraMiddleware/gtk
entry: Compute selection range correctly
gtk_editable_get_selection_bounds() returns UTF-8 character offsets, but gdk_pango_layout_get_clip_region() wants byte ranges, so convert from one to the other. With English, this is especially visible for passwords, which use ● as the invisible character. https://bugzilla.gnome.org/show_bug.cgi?id=761128
This commit is contained in:
parent
84b788c4a5
commit
a222aa66d5
@ -6373,11 +6373,14 @@ gtk_entry_draw_text (GtkEntry *entry,
|
||||
|
||||
if (gtk_editable_get_selection_bounds (GTK_EDITABLE (entry), &start_pos, &end_pos))
|
||||
{
|
||||
const char *text = pango_layout_get_text (layout);
|
||||
gint start_index = g_utf8_offset_to_pointer (text, start_pos) - text;
|
||||
gint end_index = g_utf8_offset_to_pointer (text, end_pos) - text;
|
||||
cairo_region_t *clip;
|
||||
gint range[2];
|
||||
|
||||
range[0] = MIN (start_pos, end_pos);
|
||||
range[1] = MAX (start_pos, end_pos);
|
||||
range[0] = MIN (start_index, end_index);
|
||||
range[1] = MAX (start_index, end_index);
|
||||
|
||||
gtk_style_context_save_to_node (context, priv->selection_node);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user