comctl32: When created with TCS_VERTICAL, TCS_MULTILINE is set automatically.

This commit is contained in:
Nikolay Sivov 2012-05-17 10:53:45 +04:00 committed by Alexandre Julliard
parent ace41e9264
commit 21727c416f
2 changed files with 38 additions and 5 deletions

View File

@ -3020,7 +3020,7 @@ static LRESULT TAB_Create (HWND hwnd, LPARAM lParam)
TEXTMETRICW fontMetrics;
HDC hdc;
HFONT hOldFont;
DWORD dwStyle;
DWORD style;
infoPtr = Alloc (sizeof(TAB_INFO));
@ -3054,11 +3054,13 @@ static LRESULT TAB_Create (HWND hwnd, LPARAM lParam)
/* The tab control always has the WS_CLIPSIBLINGS style. Even
if you don't specify it in CreateWindow. This is necessary in
order for paint to work correctly. This follows windows behaviour. */
dwStyle = GetWindowLongW(hwnd, GWL_STYLE);
SetWindowLongW(hwnd, GWL_STYLE, dwStyle|WS_CLIPSIBLINGS);
style = GetWindowLongW(hwnd, GWL_STYLE);
if (style & TCS_VERTICAL) style |= TCS_MULTILINE;
style |= WS_CLIPSIBLINGS;
SetWindowLongW(hwnd, GWL_STYLE, style);
infoPtr->dwStyle = dwStyle | WS_CLIPSIBLINGS;
infoPtr->exStyle = (dwStyle & TCS_FLATBUTTONS) ? TCS_EX_FLATSEPARATORS : 0;
infoPtr->dwStyle = style;
infoPtr->exStyle = (style & TCS_FLATBUTTONS) ? TCS_EX_FLATSEPARATORS : 0;
if (infoPtr->dwStyle & TCS_TOOLTIPS) {
/* Create tooltip control */

View File

@ -1428,6 +1428,36 @@ static void test_WM_CONTEXTMENU(void)
DestroyWindow(hTab);
}
struct tabcreate_style {
DWORD style;
DWORD act_style;
};
static const struct tabcreate_style create_styles[] =
{
{ WS_CHILD|TCS_BOTTOM|TCS_VERTICAL, WS_CHILD|WS_CLIPSIBLINGS|TCS_BOTTOM|TCS_VERTICAL|TCS_MULTILINE },
{ WS_CHILD|TCS_VERTICAL, WS_CHILD|WS_CLIPSIBLINGS|TCS_VERTICAL|TCS_MULTILINE },
{ 0 }
};
static void test_create(void)
{
const struct tabcreate_style *ptr = create_styles;
DWORD style;
HWND hTab;
while (ptr->style)
{
hTab = CreateWindowA(WC_TABCONTROLA, "TestTab", ptr->style,
10, 10, 300, 100, parent_wnd, NULL, NULL, 0);
style = GetWindowLongA(hTab, GWL_STYLE);
ok(style == ptr->act_style, "expected style 0x%08x, got style 0x%08x\n", ptr->act_style, style);
DestroyWindow(hTab);
ptr++;
}
}
START_TEST(tab)
{
LOGFONTA logfont;
@ -1465,6 +1495,7 @@ START_TEST(tab)
test_TCM_SETITEMEXTRA();
test_TCS_OWNERDRAWFIXED();
test_WM_CONTEXTMENU();
test_create();
DestroyWindow(parent_wnd);
}