From: Zhaoyi zhaoyi@uniontech.com
Fix the issue of incorrect link ID calculation due to a lack of judgment on the current type.
Signed-off-by: Zhaoyi zhaoyi@uniontech.com --- dlls/comctl32/syslink.c | 14 ++++++++------ dlls/comctl32/tests/syslink.c | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/dlls/comctl32/syslink.c b/dlls/comctl32/syslink.c index 8130bf19641..6af516ea1e6 100644 --- a/dlls/comctl32/syslink.c +++ b/dlls/comctl32/syslink.c @@ -1320,16 +1320,18 @@ static PDOC_ITEM SYSLINK_LinkAtPt (const SYSLINK_INFO *infoPtr, const POINT *pt,
LIST_FOR_EACH_ENTRY(Current, &infoPtr->Items, DOC_ITEM, entry) { - if((Current->Type == slLink) && SYSLINK_PtInDocItem(Current, *pt) && - (!MustBeEnabled || (Current->u.Link.state & LIS_ENABLED))) + if(Current->Type == slLink) { - if(LinkId != NULL) + if(SYSLINK_PtInDocItem(Current, *pt) && (!MustBeEnabled || (Current->u.Link.state & LIS_ENABLED))) { - *LinkId = id; + if(LinkId != NULL) + { + *LinkId = id; + } + return Current; } - return Current; + id++; } - id++; }
return NULL; diff --git a/dlls/comctl32/tests/syslink.c b/dlls/comctl32/tests/syslink.c index bbe1e38b1c4..2c753759439 100644 --- a/dlls/comctl32/tests/syslink.c +++ b/dlls/comctl32/tests/syslink.c @@ -264,13 +264,13 @@ static void test_link_id(void) g_link_id = 0; SendMessageA(hwnd, WM_LBUTTONDOWN, 1, MAKELPARAM( /* x */ 50, /* y */ 10 )); SendMessageA(hwnd, WM_LBUTTONUP, 0, MAKELPARAM( /* x */ 50, /* y */ 10 )); - todo_wine ok(g_link_id == 0, "Got unexpected link id %d.\n", g_link_id); + ok(g_link_id == 0, "Got unexpected link id %d.\n", g_link_id);
/* test link2 */ g_link_id = 0; SendMessageA(hwnd, WM_LBUTTONDOWN, 1, MAKELPARAM( /* x */ 25, /* y */ 25 )); SendMessageA(hwnd, WM_LBUTTONUP, 0, MAKELPARAM( /* x */ 25, /* y */ 25 )); - todo_wine ok(g_link_id == 1, "Got unexpected link id %d.\n", g_link_id); + ok(g_link_id == 1, "Got unexpected link id %d.\n", g_link_id);
DestroyWindow(hwnd); }