[User32|Tests] Sync Port Wine Combo Controls.

Need to cross check these changes with WINE ComCtl32 before you PANIC
HACK!!!!

Not in order:
Piotr Caban : Remove unneeded RECT parameter from CBPaintText helper.
              Don't invalidate ComboBox on CB_SETCURSEL message.
Don't invalidate ComboBox on LBN_SELCHANGE and
LBN_SELCANCEL.
              Add more CB_SETCURSEL tests on ComboBox.
              Redraw combo text field even if it's empty.
Let ComboBox edit control handle the redraw even if
CBF_NOREDRAW is set.
Don't do the painting if combobox is not visible in
CBPaintText.

Dmitry Timoshkov : Don't force a combobox repaint on WM_SIZE.

This breaks z-order based painting and causes side effects
for
applications that during the WM_PAINT processing reference
internal
             data associated with a not fully initialized window.
Ref :
2d9e3236ea

Fabian Maurer : Set listbox popup height correctly and add tests.

                Properly set dropdown height.

             Now that user32 and comctl32 combo are separated,
             this won't lead to a regression anymore
             Ref :
3d0be0bad8
             Info by Sebastian Lackner Ref:
f0fc034997

Nikolay Sivov : Remove some misleading TODOs and confusing comments.
This commit is contained in:
James Tabor 2019-09-21 08:47:56 -05:00
parent 432854ee18
commit c57d4d7b9e
2 changed files with 86 additions and 101 deletions

View file

@ -291,7 +291,7 @@ static void test_WM_LBUTTONDOWN(void)
hCombo = CreateWindowA("ComboBox", "Combo", WS_VISIBLE|WS_CHILD|CBS_DROPDOWN,
0, 0, 200, 150, hMainWnd, (HMENU)COMBO_ID, NULL, 0);
for (i = 0; i < sizeof(choices)/sizeof(UINT); i++){
for (i = 0; i < ARRAY_SIZE(choices); i++){
sprintf(buffer, stringFormat, choices[i]);
result = SendMessageA(hCombo, CB_ADDSTRING, 0, (LPARAM)buffer);
ok(result == i,
@ -688,28 +688,28 @@ static void test_listbox_size(DWORD style)
int height_combo;
BOOL todo;
} info_height[] = {
{2, 24, TRUE},
{2, 24, FALSE},
{2, 41, TRUE},
{2, 42, TRUE},
{2, 50, TRUE},
{2, 42, FALSE},
{2, 50, FALSE},
{2, 60},
{2, 80},
{2, 89},
{2, 90},
{2, 100},
{10, 24, TRUE},
{10, 24, FALSE},
{10, 41, TRUE},
{10, 42, TRUE},
{10, 50, TRUE},
{10, 60, TRUE},
{10, 80, TRUE},
{10, 42, FALSE},
{10, 50, FALSE},
{10, 60, FALSE},
{10, 80, FALSE},
{10, 89, TRUE},
{10, 90, TRUE},
{10, 100, TRUE},
{10, 90, FALSE},
{10, 100, FALSE},
};
for(test = 0; test < sizeof(info_height) / sizeof(info_height[0]); test++)
for(test = 0; test < ARRAY_SIZE(info_height); test++)
{
const struct list_size_info *info_test = &info_height[test];
int height_item; /* Height of a list item */