From 4c44499b3feed362dba9debc9ff248713a960757 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 7 Aug 2001 20:56:48 +0000 Subject: [PATCH] gtk/gtktextdisplay.c (render_para, gtk_text_layout_draw): Fix some off-by-one issues, fixing selection of line-ends. (#50323) --- ChangeLog | 5 +++++ ChangeLog.pre-2-0 | 5 +++++ ChangeLog.pre-2-10 | 5 +++++ ChangeLog.pre-2-2 | 5 +++++ ChangeLog.pre-2-4 | 5 +++++ ChangeLog.pre-2-6 | 5 +++++ ChangeLog.pre-2-8 | 5 +++++ gtk/gtktextdisplay.c | 8 ++++---- 8 files changed, 39 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index b8d06336e6..b6864c0155 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2001-08-07 + + * gtk/gtktextdisplay.c (render_para, gtk_text_layout_draw): Fix + some off-by-one issues, fixing selection of line-ends. (#50323) + 2001-08-07 Matthias Clasen * gtk/gtkhsv.c (gtk_hsv_map, gtk_hsv_unmap): Reinstate these diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index b8d06336e6..b6864c0155 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,8 @@ +2001-08-07 + + * gtk/gtktextdisplay.c (render_para, gtk_text_layout_draw): Fix + some off-by-one issues, fixing selection of line-ends. (#50323) + 2001-08-07 Matthias Clasen * gtk/gtkhsv.c (gtk_hsv_map, gtk_hsv_unmap): Reinstate these diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index b8d06336e6..b6864c0155 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +2001-08-07 + + * gtk/gtktextdisplay.c (render_para, gtk_text_layout_draw): Fix + some off-by-one issues, fixing selection of line-ends. (#50323) + 2001-08-07 Matthias Clasen * gtk/gtkhsv.c (gtk_hsv_map, gtk_hsv_unmap): Reinstate these diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index b8d06336e6..b6864c0155 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,8 @@ +2001-08-07 + + * gtk/gtktextdisplay.c (render_para, gtk_text_layout_draw): Fix + some off-by-one issues, fixing selection of line-ends. (#50323) + 2001-08-07 Matthias Clasen * gtk/gtkhsv.c (gtk_hsv_map, gtk_hsv_unmap): Reinstate these diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index b8d06336e6..b6864c0155 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,8 @@ +2001-08-07 + + * gtk/gtktextdisplay.c (render_para, gtk_text_layout_draw): Fix + some off-by-one issues, fixing selection of line-ends. (#50323) + 2001-08-07 Matthias Clasen * gtk/gtkhsv.c (gtk_hsv_map, gtk_hsv_unmap): Reinstate these diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index b8d06336e6..b6864c0155 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +2001-08-07 + + * gtk/gtktextdisplay.c (render_para, gtk_text_layout_draw): Fix + some off-by-one issues, fixing selection of line-ends. (#50323) + 2001-08-07 Matthias Clasen * gtk/gtkhsv.c (gtk_hsv_map, gtk_hsv_unmap): Reinstate these diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index b8d06336e6..b6864c0155 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +2001-08-07 + + * gtk/gtktextdisplay.c (render_para, gtk_text_layout_draw): Fix + some off-by-one issues, fixing selection of line-ends. (#50323) + 2001-08-07 Matthias Clasen * gtk/gtkhsv.c (gtk_hsv_map, gtk_hsv_unmap): Reinstate these diff --git a/gtk/gtktextdisplay.c b/gtk/gtktextdisplay.c index bf5c1cdec3..9149886c49 100644 --- a/gtk/gtktextdisplay.c +++ b/gtk/gtktextdisplay.c @@ -539,7 +539,7 @@ render_para (GdkDrawable *drawable, y + PANGO_PIXELS (baseline), FALSE); - if (selection_start_index < byte_offset + line->length && + if (selection_start_index <= byte_offset + line->length && selection_end_index > byte_offset) /* Some selected */ { GdkRegion *clip_region = get_selected_clip (render_state, layout, line, @@ -746,7 +746,7 @@ gtk_text_layout_draw (GtkTextLayout *layout, { GtkTextIter line_start, line_end; gint byte_count; - + gtk_text_layout_get_iter_at_line (layout, &line_start, line, 0); @@ -757,8 +757,8 @@ gtk_text_layout_draw (GtkTextLayout *layout, &line_end, line, byte_count - 1); - if (gtk_text_iter_compare (&selection_start, &line_end) < 0 && - gtk_text_iter_compare (&selection_end, &line_start) > 0) + if (gtk_text_iter_compare (&selection_start, &line_end) <= 0 && + gtk_text_iter_compare (&selection_end, &line_start) >= 0) { if (gtk_text_iter_compare (&selection_start, &line_start) >= 0) selection_start_index = gtk_text_iter_get_line_index (&selection_start);