Nikolay Sivov : comctl32/tests: Fix couple of metrics tests that fail on some systems.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Apr 2 11:09:20 CDT 2015


Module: wine
Branch: master
Commit: af30ffaa4351f115dc4b4fad0191901637a6f3fb
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=af30ffaa4351f115dc4b4fad0191901637a6f3fb

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Thu Apr  2 01:20:52 2015 +0300

comctl32/tests: Fix couple of metrics tests that fail on some systems.

---

 dlls/comctl32/tests/listview.c | 44 ++++++++++++++++++++++++++++++++++--------
 1 file changed, 36 insertions(+), 8 deletions(-)

diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c
index 94c19f4..a165100 100644
--- a/dlls/comctl32/tests/listview.c
+++ b/dlls/comctl32/tests/listview.c
@@ -3915,7 +3915,6 @@ static void test_getitemrect(void)
     LVCOLUMNA col;
     INT order[2];
     POINT pt;
-    HDC hdc;
 
     /* rectangle isn't empty for empty text items */
     hwnd = create_listview_control(LVS_LIST);
@@ -3929,9 +3928,9 @@ static void test_getitemrect(void)
     expect(TRUE, r);
     expect(0, rect.left);
     expect(0, rect.top);
-    hdc = GetDC(hwnd);
-    todo_wine expect(((GetDeviceCaps(hdc, LOGPIXELSX) + 15) / 16) * 16, rect.right);
-    ReleaseDC(hwnd, hdc);
+    /* estimate it as width / height ratio */
+todo_wine
+    ok((rect.right / rect.bottom) >= 5, "got right %d, bottom %d\n", rect.right, rect.bottom);
     DestroyWindow(hwnd);
 
     hwnd = create_listview_control(LVS_REPORT);
@@ -4833,6 +4832,36 @@ static void test_getitemspacing(void)
     DestroyWindow(hwnd);
 }
 
+static INT get_current_font_height(HWND listview)
+{
+    TEXTMETRICA tm;
+    HFONT hfont;
+    HWND hwnd;
+    HDC hdc;
+
+    hwnd = (HWND)SendMessageA(listview, LVM_GETHEADER, 0, 0);
+    if (!hwnd)
+        hwnd = listview;
+
+    hfont = (HFONT)SendMessageA(hwnd, WM_GETFONT, 0, 0);
+    if (!hfont) {
+        hdc = GetDC(hwnd);
+        GetTextMetricsA(hdc, &tm);
+        ReleaseDC(hwnd, hdc);
+    }
+    else {
+        HFONT oldfont;
+
+        hdc = GetDC(0);
+        oldfont = SelectObject(hdc, hfont);
+        GetTextMetricsA(hdc, &tm);
+        SelectObject(hdc, oldfont);
+        ReleaseDC(0, hdc);
+    }
+
+    return tm.tmHeight;
+}
+
 static void test_getcolumnwidth(void)
 {
     HWND hwnd;
@@ -4840,7 +4869,7 @@ static void test_getcolumnwidth(void)
     DWORD_PTR style;
     LVCOLUMNA col;
     LVITEMA itema;
-    HDC hdc;
+    INT height;
 
     /* default column width */
     hwnd = create_listview_control(LVS_ICON);
@@ -4864,9 +4893,8 @@ static void test_getcolumnwidth(void)
     memset(&itema, 0, sizeof(itema));
     SendMessageA(hwnd, LVM_INSERTITEMA, 0, (LPARAM)&itema);
     ret = SendMessageA(hwnd, LVM_GETCOLUMNWIDTH, 0, 0);
-    hdc = GetDC(hwnd);
-    todo_wine expect(((GetDeviceCaps(hdc, LOGPIXELSX) + 15) / 16) * 16, ret);
-    ReleaseDC(hwnd, hdc);
+    height = get_current_font_height(hwnd);
+    ok((ret / height) >= 6, "got width %d, height %d\n", ret, height);
     DestroyWindow(hwnd);
 }
 




More information about the wine-cvs mailing list