[PATCH 4/4] dwrite: Always set canWrapLineAfter for last cluster

Nikolay Sivov nsivov at codeweavers.com
Mon Jun 29 04:52:38 CDT 2015


---

-------------- next part --------------
>From 7bf6dc133aec4f0db52f5a488b50d768ef4b8a1c Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov at codeweavers.com>
Date: Mon, 29 Jun 2015 12:46:06 +0300
Subject: [PATCH 4/4] dwrite: Always set canWrapLineAfter for last cluster

---
 dlls/dwrite/layout.c       | 5 ++++-
 dlls/dwrite/tests/layout.c | 4 ----
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c
index 3863e5c..752bd50 100644
--- a/dlls/dwrite/layout.c
+++ b/dlls/dwrite/layout.c
@@ -825,8 +825,11 @@ static HRESULT layout_compute_runs(struct dwrite_textlayout *layout)
         break;
     }
 
-    if (hr == S_OK)
+    if (hr == S_OK) {
         layout->cluster_count = cluster;
+        if (cluster)
+            layout->clustermetrics[cluster-1].canWrapLineAfter = TRUE;
+    }
 
     IDWriteTextAnalyzer_Release(analyzer);
     return hr;
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
index c7ca5b7..43233f4 100644
--- a/dlls/dwrite/tests/layout.c
+++ b/dlls/dwrite/tests/layout.c
@@ -1659,7 +1659,6 @@ todo_wine
 
     ok(metrics[2].width > 0.0, "got %.2f\n", metrics[2].width);
     ok(metrics[2].length == 1, "got %d\n", metrics[2].length);
-todo_wine
     ok(metrics[2].canWrapLineAfter == 1, "got %d\n", metrics[2].canWrapLineAfter);
     ok(metrics[2].isWhitespace == 0, "got %d\n", metrics[2].isWhitespace);
     ok(metrics[2].isNewline == 0, "got %d\n", metrics[2].isNewline);
@@ -1686,7 +1685,6 @@ todo_wine
     /* object sets a width to 123.0, but returns failure from GetMetrics() */
     ok(metrics[0].width == 0.0, "got %.2f\n", metrics[0].width);
     ok(metrics[0].length == 4, "got %d\n", metrics[0].length);
-todo_wine
     ok(metrics[0].canWrapLineAfter == 1, "got %d\n", metrics[0].canWrapLineAfter);
     ok(metrics[0].isWhitespace == 0, "got %d\n", metrics[0].isWhitespace);
     ok(metrics[0].isNewline == 0, "got %d\n", metrics[0].isNewline);
@@ -1715,7 +1713,6 @@ todo_wine
 
     ok(metrics[1].width == 0.0, "got %.2f\n", metrics[1].width);
     ok(metrics[1].length == 2, "got %d\n", metrics[1].length);
-todo_wine
     ok(metrics[1].canWrapLineAfter == 1, "got %d\n", metrics[1].canWrapLineAfter);
     ok(metrics[1].isWhitespace == 0, "got %d\n", metrics[1].isWhitespace);
     ok(metrics[1].isNewline == 0, "got %d\n", metrics[1].isNewline);
@@ -1763,7 +1760,6 @@ todo_wine
     hr = IDWriteTextLayout_GetClusterMetrics(layout, metrics, 2, &count);
     ok(hr == S_OK, "got 0x%08x\n", hr);
     ok(count == 1, "got %u\n", count);
-todo_wine
     ok(metrics[0].canWrapLineAfter == 1, "got %d\n", metrics[0].canWrapLineAfter);
 
     IDWriteTextLayout_Release(layout);
-- 
2.1.4



More information about the wine-patches mailing list