Ignore indent if aligned center, and document so. This assumption was
authorBehdad Esfahbod <behdad@gnome.org>
Tue, 8 Jan 2008 22:55:14 +0000 (22:55 +0000)
committerBehdad Esfahbod <behdad@src.gnome.org>
Tue, 8 Jan 2008 22:55:14 +0000 (22:55 +0000)
2008-01-08  Behdad Esfahbod  <behdad@gnome.org>

        * pango/pango-layout.c: Ignore indent if aligned center, and document
        so.  This assumption was present in some places and not the others.
        Fixed now.

svn path=/trunk/; revision=2538

ChangeLog
pango/pango-layout.c

index d0741bd..06bf86e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2008-01-08  Behdad Esfahbod  <behdad@gnome.org>
 
+       * pango/pango-layout.c: Ignore indent if aligned center, and document
+       so.  This assumption was present in some places and not the others.
+       Fixed now.
+
+2008-01-08  Behdad Esfahbod  <behdad@gnome.org>
+
        Bug 508007 – Add option for single-paragraph mode to pango-view
 
        * pango-view/viewer-render.c (make_layout), (parse_options): Add
index dd1ce5b..df4772a 100644 (file)
@@ -451,6 +451,9 @@ pango_layout_is_wrapped (PangoLayout *layout)
  * of @indent will produce a hanging indentation. That is, the first line will
  * have the full width, and subsequent lines will be indented by the
  * absolute value of @indent.
+ *
+ * The indent setting is ignored if layout alignment is set to
+ * %PANGO_ALIGN_CENTER.
  **/
 void
 pango_layout_set_indent (PangoLayout *layout,
@@ -3314,10 +3317,18 @@ process_line (PangoLayout    *layout,
 
   if (layout->ellipsize != PANGO_ELLIPSIZE_NONE)
     state->remaining_width = -1;
-  else if (state->first_line)
-    state->remaining_width = (layout->indent >= 0) ? layout->width - layout->indent : layout->width;
   else
-    state->remaining_width = (layout->indent >= 0) ? layout->width : layout->width + layout->indent;
+    {
+      state->remaining_width = layout->width;
+  
+      if (layout->alignment != PANGO_ALIGN_CENTER)
+        {
+         if (state->first_line && layout->indent >= 0)
+           state->remaining_width -= layout->indent;
+         else if (!state->first_line && layout->indent < 0)
+           state->remaining_width += layout->indent;
+        }
+    }
   DEBUG ("starting to fill line", line, state);
 
   while (state->items)