summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2005-07-25 17:33:28 +0000
committerOwen Taylor <otaylor@src.gnome.org>2005-07-25 17:33:28 +0000
commit59467b6cedcb1baff9934ba6bd0bfb2cdee296f8 (patch)
tree25a9ff87b780890a203db3066fa339f0274637bd
parenta588fa4b7a8bae21fd088e96c0a061959eeba1e6 (diff)
downloadpango-59467b6cedcb1baff9934ba6bd0bfb2cdee296f8.tar.gz
Always set line->resolved_dir to one of LTR or RTL. (#171439, Reported by
2005-07-25 Owen Taylor <otaylor@redhat.com> * pango/pango-layout.c (line_set_resolved_dir): Always set line->resolved_dir to one of LTR or RTL. (#171439, Reported by Chris Blizzard)
-rw-r--r--ChangeLog6
-rw-r--r--ChangeLog.pre-1-106
-rw-r--r--pango/pango-layout.c29
3 files changed, 38 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 01b0aca3..e2fea928 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-07-25 Owen Taylor <otaylor@redhat.com>
+
+ * pango/pango-layout.c (line_set_resolved_dir): Always set
+ line->resolved_dir to one of LTR or RTL. (#171439, Reported
+ by Chris Blizzard)
+
2005-07-22 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c: Add some missing statics on functions
diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10
index 01b0aca3..e2fea928 100644
--- a/ChangeLog.pre-1-10
+++ b/ChangeLog.pre-1-10
@@ -1,3 +1,9 @@
+2005-07-25 Owen Taylor <otaylor@redhat.com>
+
+ * pango/pango-layout.c (line_set_resolved_dir): Always set
+ line->resolved_dir to one of LTR or RTL. (#171439, Reported
+ by Chris Blizzard)
+
2005-07-22 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c: Add some missing statics on functions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index f77004c4..4f4810ca 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -2924,6 +2924,29 @@ process_item (PangoLayout *layout,
}
}
+/* The resolved direction for the line is always one
+ * of LTR/RTL; not a week or neutral directions
+ */
+static void
+line_set_resolved_dir (PangoLayoutLine *line,
+ PangoDirection direction)
+{
+ switch (direction)
+ {
+ case PANGO_DIRECTION_LTR:
+ case PANGO_DIRECTION_TTB_RTL:
+ case PANGO_DIRECTION_WEAK_LTR:
+ case PANGO_DIRECTION_NEUTRAL:
+ line->resolved_dir = PANGO_DIRECTION_LTR;
+ break;
+ case PANGO_DIRECTION_RTL:
+ case PANGO_DIRECTION_WEAK_RTL:
+ case PANGO_DIRECTION_TTB_LTR:
+ line->resolved_dir = PANGO_DIRECTION_RTL;
+ break;
+ }
+}
+
static void
process_line (PangoLayout *layout,
ParaBreakState *state)
@@ -2938,7 +2961,7 @@ process_line (PangoLayout *layout,
line = pango_layout_line_new (layout);
line->start_index = state->line_start_index;
line->is_paragraph_start = state->first_line;
- line->resolved_dir = state->base_dir;
+ line_set_resolved_dir (line, state->base_dir);
if (layout->ellipsize != PANGO_ELLIPSIZE_NONE)
state->remaining_width = -1;
@@ -3264,8 +3287,8 @@ pango_layout_check_lines (PangoLayout *layout)
empty_line = pango_layout_line_new (layout);
empty_line->start_index = start - layout->text;
- empty_line->is_paragraph_start = TRUE;
- empty_line->resolved_dir = base_dir;
+ empty_line->is_paragraph_start = TRUE;
+ line_set_resolved_dir (empty_line, base_dir);
layout->lines = g_slist_prepend (layout->lines,
empty_line);