From: Brendan McGrath bmcgrath@codeweavers.com
Windows sets the default width to LOGPIXELSX regardless of the style.
It will also always return the previous cx value provided. --- dlls/comctl32/tab.c | 14 +++++++------- dlls/comctl32/tests/tab.c | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/dlls/comctl32/tab.c b/dlls/comctl32/tab.c index 13abbd8078d..73b3f313086 100644 --- a/dlls/comctl32/tab.c +++ b/dlls/comctl32/tab.c @@ -2662,19 +2662,20 @@ TAB_SetItemSize (TAB_INFO *infoPtr, INT cx, INT cy) lResult = MAKELONG(infoPtr->tabWidth, infoPtr->tabHeight);
/* UNDOCUMENTED: If requested Width or Height is 0 this means that program wants to use auto size. */ - if (infoPtr->dwStyle & TCS_FIXEDWIDTH && (infoPtr->tabWidth != cx)) + if (infoPtr->tabWidth != cx) { infoPtr->tabWidth = cx; bNeedPaint = TRUE; }
- if (infoPtr->tabHeight != cy) + if (infoPtr->tabHeight != cy && cy != 0) { - if ((infoPtr->fHeightSet = (cy != 0))) - infoPtr->tabHeight = cy; - + infoPtr->tabHeight = cy; bNeedPaint = TRUE; } + + infoPtr->fHeightSet = (cy != 0); + TRACE("was h=%d,w=%d, now h=%d,w=%d\n", HIWORD(lResult), LOWORD(lResult), infoPtr->tabHeight, infoPtr->tabWidth); @@ -3063,8 +3064,7 @@ static LRESULT TAB_Create (HWND hwnd, LPARAM lParam) infoPtr->uVItemPadding;
/* Initialize the width of a tab. */ - if (infoPtr->dwStyle & TCS_FIXEDWIDTH) - infoPtr->tabWidth = GetDeviceCaps(hdc, LOGPIXELSX); + infoPtr->tabWidth = GetDeviceCaps(hdc, LOGPIXELSX);
infoPtr->tabMinWidth = -1;
diff --git a/dlls/comctl32/tests/tab.c b/dlls/comctl32/tests/tab.c index b0a882e6e26..0704dce940c 100644 --- a/dlls/comctl32/tests/tab.c +++ b/dlls/comctl32/tests/tab.c @@ -689,10 +689,10 @@ static void test_setitemsize(void) ReleaseDC(hwTab, hdc);
result = SendMessageA(hwTab, TCM_SETITEMSIZE, 0, MAKELPARAM(50, 20)); - todo_wine ok (LOWORD(result) == dpi, "Excepted width to be %d, got %d\n", dpi, LOWORD(result)); + ok (LOWORD(result) == dpi, "Excepted width to be %d, got %d\n", dpi, LOWORD(result));
result = SendMessageA(hwTab, TCM_SETITEMSIZE, 0, MAKELPARAM(0, 1)); - todo_wine ok (LOWORD(result) == 50, "Excepted width to be 50, got %d\n", LOWORD(result)); + ok (LOWORD(result) == 50, "Excepted width to be 50, got %d\n", LOWORD(result)); ok (HIWORD(result) == 20, "Excepted height to be 20, got %d\n", HIWORD(result));
DestroyWindow (hwTab);