From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/dwrite/layout.c | 4 +++- dlls/dwrite/tests/layout.c | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c index 932be5551ac..949b81baf67 100644 --- a/dlls/dwrite/layout.c +++ b/dlls/dwrite/layout.c @@ -124,6 +124,7 @@ enum layout_run_kind { struct inline_object_run { IDWriteInlineObject *object; UINT16 length; + UINT8 bidi_level; }; struct regular_layout_run { @@ -767,6 +768,7 @@ static HRESULT layout_itemize_add_run(struct itemization_context *context) run->u.object.object = context->range.value->object; run->u.object.length = length; + run->u.object.bidi_level = context->level.value; } else { @@ -1360,7 +1362,7 @@ static HRESULT layout_compute_runs(struct dwrite_textlayout *layout) metrics->isWhitespace = 0; metrics->isNewline = 0; metrics->isSoftHyphen = 0; - metrics->isRightToLeft = 0; + metrics->isRightToLeft = r->u.object.bidi_level & 1; metrics->padding = 0; c->run = r; c->position = 0; /* there's always one cluster per inline object, so 0 is valid value */ diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c index 8fc02a0fe9f..b7f3e1a5018 100644 --- a/dlls/dwrite/tests/layout.c +++ b/dlls/dwrite/tests/layout.c @@ -2619,7 +2619,6 @@ static void test_GetClusterMetrics(void) ok(count == 5, "Unexpected count %u.\n", count); ok(metrics[0].isRightToLeft == 1, "Unexpected value %d.\n", metrics[0].isRightToLeft); - todo_wine ok(metrics[1].isRightToLeft == 1, "Unexpected value %d.\n", metrics[1].isRightToLeft); ok(metrics[2].isRightToLeft == 0, "Unexpected value %d.\n", metrics[2].isRightToLeft); ok(metrics[3].isRightToLeft == 1, "Unexpected value %d.\n", metrics[3].isRightToLeft); @@ -2637,7 +2636,6 @@ static void test_GetClusterMetrics(void) ok(count == 4, "Unexpected count %u.\n", count); ok(metrics[0].isRightToLeft == 1, "Unexpected value %d.\n", metrics[0].isRightToLeft); - todo_wine ok(metrics[1].isRightToLeft == 1, "Unexpected value %d.\n", metrics[1].isRightToLeft); ok(metrics[1].length == 2, "Unexpected value %d.\n", metrics[1].length); ok(metrics[2].isRightToLeft == 1, "Unexpected value %d.\n", metrics[2].isRightToLeft); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9974