Nikolay Sivov : comctl32/syslink: Fix return value for LM_GETIDEALSIZE.
Alexandre Julliard
julliard at winehq.org
Fri Dec 1 14:08:18 CST 2017
Module: wine
Branch: master
Commit: 57dec7677816446763d280f55a9b1a5cebef6436
URL: http://source.winehq.org/git/wine.git/?a=commit;h=57dec7677816446763d280f55a9b1a5cebef6436
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Fri Dec 1 08:30:17 2017 +0300
comctl32/syslink: Fix return value for LM_GETIDEALSIZE.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/comctl32/syslink.c | 12 ++++++------
dlls/comctl32/tests/syslink.c | 39 +++++++++++++++++++++++++++++++++++++++
2 files changed, 45 insertions(+), 6 deletions(-)
diff --git a/dlls/comctl32/syslink.c b/dlls/comctl32/syslink.c
index 339c728..67a1a60 100644
--- a/dlls/comctl32/syslink.c
+++ b/dlls/comctl32/syslink.c
@@ -1472,7 +1472,7 @@ static BOOL SYSLINK_NoNextLink (const SYSLINK_INFO *infoPtr, BOOL Prev)
* SYSLINK_GetIdealSize
* Calculates the ideal size of a link control at a given maximum width.
*/
-static VOID SYSLINK_GetIdealSize (const SYSLINK_INFO *infoPtr, int cxMaxWidth, LPSIZE lpSize)
+static LONG SYSLINK_GetIdealSize (const SYSLINK_INFO *infoPtr, int cxMaxWidth, SIZE *lpSize)
{
RECT rc;
HDC hdc;
@@ -1493,6 +1493,8 @@ static VOID SYSLINK_GetIdealSize (const SYSLINK_INFO *infoPtr, int cxMaxWidth, L
lpSize->cx = rc.right;
lpSize->cy = rc.bottom;
}
+
+ return rc.bottom;
}
/***********************************************************************
@@ -1664,11 +1666,9 @@ static LRESULT WINAPI SysLinkWindowProc(HWND hwnd, UINT message,
case LM_GETIDEALHEIGHT:
if (lParam)
- {
- /* LM_GETIDEALSIZE */
- SYSLINK_GetIdealSize(infoPtr, (int)wParam, (LPSIZE)lParam);
- }
- return SYSLINK_GetIdealHeight(infoPtr);
+ return SYSLINK_GetIdealSize(infoPtr, (int)wParam, (SIZE *)lParam);
+ else
+ return SYSLINK_GetIdealHeight(infoPtr);
case WM_SETFOCUS:
return SYSLINK_SetFocus(infoPtr);
diff --git a/dlls/comctl32/tests/syslink.c b/dlls/comctl32/tests/syslink.c
index 382c89d..a6b90b6 100644
--- a/dlls/comctl32/tests/syslink.c
+++ b/dlls/comctl32/tests/syslink.c
@@ -205,6 +205,43 @@ static void test_create_syslink(void)
DestroyWindow(hWndSysLink);
}
+static void test_LM_GETIDEALHEIGHT(void)
+{
+ HWND hwnd;
+ LONG ret;
+
+ hwnd = create_syslink(WS_CHILD | WS_TABSTOP | WS_VISIBLE, hWndParent);
+ ok(hwnd != NULL, "Failed to create SysLink window.\n");
+
+ ret = SendMessageA(hwnd, LM_GETIDEALHEIGHT, 0, 0);
+ ok(ret > 0, "Unexpected ideal height, %d.\n", ret);
+
+ DestroyWindow(hwnd);
+}
+
+static void test_LM_GETIDEALSIZE(void)
+{
+ HWND hwnd;
+ LONG ret;
+ SIZE sz;
+
+ hwnd = create_syslink(WS_CHILD | WS_TABSTOP | WS_VISIBLE, hWndParent);
+ ok(hwnd != NULL, "Failed to create SysLink window.\n");
+
+ memset(&sz, 0, sizeof(sz));
+ ret = SendMessageA(hwnd, LM_GETIDEALSIZE, 0, (LPARAM)&sz);
+ ok(ret > 0, "Unexpected return value, %d.\n", ret);
+ if (sz.cy == 0)
+ win_skip("LM_GETIDEALSIZE is not supported.\n");
+ else
+ {
+ ok(sz.cx > 5, "Unexpected ideal width, %d.\n", sz.cx);
+ ok(sz.cy == ret, "Unexpected ideal height, %d.\n", sz.cy);
+ }
+
+ DestroyWindow(hwnd);
+}
+
START_TEST(syslink)
{
ULONG_PTR ctx_cookie;
@@ -231,6 +268,8 @@ START_TEST(syslink)
flush_events();
test_create_syslink();
+ test_LM_GETIDEALHEIGHT();
+ test_LM_GETIDEALSIZE();
DestroyWindow(hWndParent);
unload_v6_module(ctx_cookie, hCtx);
More information about the wine-cvs
mailing list