From 83eb184c2c68bf370eef2e9970b4ef80e178899d Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Sat, 13 Mar 2004 23:28:14 +0000 Subject: [PATCH] When not wrapping, do the offset of the line for justification ourselves. Sat Mar 13 18:13:13 2004 Owen Taylor * gtk/gtktextlayout.c (gtk_text_layout_get_line_display): When not wrapping, do the offset of the line for justification ourselves. (#120256, Felipe Heidrich) --- ChangeLog | 6 ++++++ ChangeLog.pre-2-10 | 6 ++++++ ChangeLog.pre-2-4 | 6 ++++++ ChangeLog.pre-2-6 | 6 ++++++ ChangeLog.pre-2-8 | 6 ++++++ gtk/gtktextlayout.c | 22 +++++++++++++++++++++- 6 files changed, 51 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 359e0b398f..0233684473 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Sat Mar 13 18:13:13 2004 Owen Taylor + + * gtk/gtktextlayout.c (gtk_text_layout_get_line_display): When not + wrapping, do the offset of the line for justification ourselves. + (#120256, Felipe Heidrich) + Sun Mar 14 00:03:18 2004 Matthias Clasen * gtk/gtkcellview.c (gtk_cell_view_expose): Support the diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 359e0b398f..0233684473 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +Sat Mar 13 18:13:13 2004 Owen Taylor + + * gtk/gtktextlayout.c (gtk_text_layout_get_line_display): When not + wrapping, do the offset of the line for justification ourselves. + (#120256, Felipe Heidrich) + Sun Mar 14 00:03:18 2004 Matthias Clasen * gtk/gtkcellview.c (gtk_cell_view_expose): Support the diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 359e0b398f..0233684473 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,9 @@ +Sat Mar 13 18:13:13 2004 Owen Taylor + + * gtk/gtktextlayout.c (gtk_text_layout_get_line_display): When not + wrapping, do the offset of the line for justification ourselves. + (#120256, Felipe Heidrich) + Sun Mar 14 00:03:18 2004 Matthias Clasen * gtk/gtkcellview.c (gtk_cell_view_expose): Support the diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 359e0b398f..0233684473 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,9 @@ +Sat Mar 13 18:13:13 2004 Owen Taylor + + * gtk/gtktextlayout.c (gtk_text_layout_get_line_display): When not + wrapping, do the offset of the line for justification ourselves. + (#120256, Felipe Heidrich) + Sun Mar 14 00:03:18 2004 Matthias Clasen * gtk/gtkcellview.c (gtk_cell_view_expose): Support the diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 359e0b398f..0233684473 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +Sat Mar 13 18:13:13 2004 Owen Taylor + + * gtk/gtktextlayout.c (gtk_text_layout_get_line_display): When not + wrapping, do the offset of the line for justification ourselves. + (#120256, Felipe Heidrich) + Sun Mar 14 00:03:18 2004 Matthias Clasen * gtk/gtkcellview.c (gtk_cell_view_expose): Support the diff --git a/gtk/gtktextlayout.c b/gtk/gtktextlayout.c index 874dc3cd84..60e8142d34 100644 --- a/gtk/gtktextlayout.c +++ b/gtk/gtktextlayout.c @@ -1294,7 +1294,7 @@ set_para_values (GtkTextLayout *layout, case GTK_WRAP_NONE: break; } - + display->total_width = MAX (layout->screen_width, layout->width) - display->left_margin - display->right_margin; } @@ -2090,6 +2090,26 @@ gtk_text_layout_get_line_display (GtkTextLayout *layout, display->width = PIXEL_BOUND (extents.width) + display->left_margin + display->right_margin; display->height += PANGO_PIXELS (extents.height); + + /* If we aren't wrapping, we need to do the alignment of each + * paragraph ourselves. + */ + if (pango_layout_get_width (display->layout) < 0) + { + gint excess = display->total_width - display->width; + + switch (pango_layout_get_alignment (display->layout)) + { + case PANGO_ALIGN_LEFT: + break; + case PANGO_ALIGN_CENTER: + display->x_offset += excess / 2; + break; + case PANGO_ALIGN_RIGHT: + display->x_offset += excess; + break; + } + } /* Free this if we aren't in a loop */ if (layout->wrap_loop_count == 0)