[pango/pango-1-48: 2/7] itemize: Fix up gravity state initialization




commit 304f6f06ae3b2c40bf63d691a1b0169f10afd4e0
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Aug 2 01:17:18 2021 -0400

    itemize: Fix up gravity state initialization
    
    itemize_state_init was setting gravity-related fields
    to their initial values too late, after update_attr_iterator
    has already set them to the values for the first run.
    
    Test included.

 pango/pango-context.c           |  9 +++++----
 tests/layouts/valid-20.expected | 40 ++++++++++++++++++++++++++++++++++++++++
 tests/layouts/valid-20.markup   |  2 ++
 3 files changed, 47 insertions(+), 4 deletions(-)
---
diff --git a/pango/pango-context.c b/pango/pango-context.c
index ac59f3d8..4f15dd61 100644
--- a/pango/pango-context.c
+++ b/pango/pango-context.c
@@ -1031,6 +1031,11 @@ itemize_state_init (ItemizeState               *state,
   state->embedding_end = text + start_index;
   update_embedding_end (state);
 
+  state->gravity = PANGO_GRAVITY_AUTO;
+  state->centered_baseline = PANGO_GRAVITY_IS_VERTICAL (state->context->resolved_gravity);
+  state->gravity_hint = state->context->gravity_hint;
+  state->resolved_gravity = PANGO_GRAVITY_AUTO;
+
   /* Initialize the attribute iterator
    */
   if (cached_iter)
@@ -1088,10 +1093,6 @@ itemize_state_init (ItemizeState               *state,
   else
     state->font_desc_gravity = PANGO_GRAVITY_AUTO;
 
-  state->gravity = PANGO_GRAVITY_AUTO;
-  state->centered_baseline = PANGO_GRAVITY_IS_VERTICAL (state->context->resolved_gravity);
-  state->gravity_hint = state->context->gravity_hint;
-  state->resolved_gravity = PANGO_GRAVITY_AUTO;
   state->derived_lang = NULL;
   state->current_fonts = NULL;
   state->cache = NULL;
diff --git a/tests/layouts/valid-20.expected b/tests/layouts/valid-20.expected
new file mode 100644
index 00000000..6939260b
--- /dev/null
+++ b/tests/layouts/valid-20.expected
@@ -0,0 +1,40 @@
+abcdef
+
+--- parameters
+
+wrapped: 0
+ellipsized: 0
+lines: 2
+
+--- attributes
+
+range 0 3
+[0,3]gravity=1
+[0,3]gravity-hint=1
+range 3 6
+[3,6]gravity=0
+range 6 2147483647
+
+--- directions
+
+0 0 0 0 0 0 0 
+
+--- cursor positions
+
+0(0) 1(0) 2(0) 3(0) 4(0) 5(0) 5(1) 7(0) 
+
+--- lines
+
+i=1, index=0, paragraph-start=1, dir=ltr 'abcdef
+'
+i=2, index=7, paragraph-start=1, dir=ltr ''
+
+--- runs
+
+i=1, index=0, chars=3, level=0, gravity=east, flags=0, font=OMITTED, script=latin, language=en-us, 'abc'
+[0,3]gravity=1
+[0,3]gravity-hint=1
+i=2, index=3, chars=3, level=0, gravity=south, flags=0, font=OMITTED, script=latin, language=en-us, 'def'
+[3,6]gravity=0
+i=3, index=6, no run, line end
+i=4, index=7, no run, line end
diff --git a/tests/layouts/valid-20.markup b/tests/layouts/valid-20.markup
new file mode 100644
index 00000000..fe6480d7
--- /dev/null
+++ b/tests/layouts/valid-20.markup
@@ -0,0 +1,2 @@
+# exercise gravity handling
+<span gravity='east' gravity_hint='strong'>abc</span><span gravity='south'>def</span>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]