Fix #111031, reported by Padraig O'Briain:
2004-12-08 Matthias Clasen <mclasen@redhat.com> Fix #111031, reported by Padraig O'Briain: * gtk/gtktextlayout.h: * gtk/gtktextlayout.c (gtk_text_layout_get_iter_at_position): Add a variant of gtk_text_layout_get_iter_at_pixel() which returns the character at the position, not the closest cursor position. * gtk/gtktextview.h: * gtk/gtktextview.c (gtk_text_view_get_iter_at_position): Add a variant of gtk_text_view_get_iter_at_location() which returns the character at the position, not the closest cursor position.
This commit is contained in:

committed by
Matthias Clasen

parent
456ebcea28
commit
057ab5a4df
@ -2277,11 +2277,25 @@ gtk_text_layout_get_line_at_y (GtkTextLayout *layout,
|
||||
|
||||
void
|
||||
gtk_text_layout_get_iter_at_pixel (GtkTextLayout *layout,
|
||||
GtkTextIter *target_iter,
|
||||
gint x, gint y)
|
||||
GtkTextIter *target_iter,
|
||||
gint x,
|
||||
gint y)
|
||||
{
|
||||
gint trailing;
|
||||
|
||||
gtk_text_layout_get_iter_at_position (layout, target_iter, &trailing, x, y);
|
||||
|
||||
gtk_text_iter_forward_chars (target_iter, trailing);
|
||||
}
|
||||
|
||||
void gtk_text_layout_get_iter_at_position (GtkTextLayout *layout,
|
||||
GtkTextIter *target_iter,
|
||||
gint *trailing,
|
||||
gint x,
|
||||
gint y)
|
||||
{
|
||||
GtkTextLine *line;
|
||||
gint byte_index, trailing;
|
||||
gint byte_index;
|
||||
gint line_top;
|
||||
GtkTextLineDisplay *display;
|
||||
|
||||
@ -2301,7 +2315,7 @@ gtk_text_layout_get_iter_at_pixel (GtkTextLayout *layout,
|
||||
if (y > display->height - display->top_margin - display->bottom_margin)
|
||||
{
|
||||
byte_index = _gtk_text_line_byte_count (line);
|
||||
trailing = 0;
|
||||
*trailing = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2310,14 +2324,15 @@ gtk_text_layout_get_iter_at_pixel (GtkTextLayout *layout,
|
||||
* x-direction.
|
||||
*/
|
||||
pango_layout_xy_to_index (display->layout, x * PANGO_SCALE, y * PANGO_SCALE,
|
||||
&byte_index, &trailing);
|
||||
&byte_index, trailing);
|
||||
}
|
||||
|
||||
line_display_index_to_iter (layout, display, target_iter, byte_index, trailing);
|
||||
line_display_index_to_iter (layout, display, target_iter, byte_index, 0);
|
||||
|
||||
gtk_text_layout_free_line_display (layout, display);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* gtk_text_layout_get_cursor_locations:
|
||||
* @layout: a #GtkTextLayout
|
||||
|
Reference in New Issue
Block a user