user32: Allow setting horizontal extent even without WS_HSCROLL.

This commit is contained in:
Andrew Eikum 2014-04-23 14:58:29 -05:00 committed by Alexandre Julliard
parent 5d31c1e824
commit c4a28490f3
2 changed files with 39 additions and 3 deletions

View File

@ -83,7 +83,7 @@ typedef struct
INT item_height; /* Default item height */ INT item_height; /* Default item height */
INT page_size; /* Items per listbox page */ INT page_size; /* Items per listbox page */
INT column_width; /* Column width for multi-column listboxes */ INT column_width; /* Column width for multi-column listboxes */
INT horz_extent; /* Horizontal extent (0 if no hscroll) */ INT horz_extent; /* Horizontal extent */
INT horz_pos; /* Horizontal position */ INT horz_pos; /* Horizontal position */
INT nb_tabs; /* Number of tabs in array */ INT nb_tabs; /* Number of tabs in array */
INT *tabs; /* Array of tabs */ INT *tabs; /* Array of tabs */
@ -1239,7 +1239,7 @@ static void LISTBOX_SetHorizontalPos( LB_DESCR *descr, INT pos )
*/ */
static LRESULT LISTBOX_SetHorizontalExtent( LB_DESCR *descr, INT extent ) static LRESULT LISTBOX_SetHorizontalExtent( LB_DESCR *descr, INT extent )
{ {
if (!descr->horz_extent || (descr->style & LBS_MULTICOLUMN)) if (descr->style & LBS_MULTICOLUMN)
return LB_OKAY; return LB_OKAY;
if (extent <= 0) extent = 1; if (extent <= 0) extent = 1;
if (extent == descr->horz_extent) return LB_OKAY; if (extent == descr->horz_extent) return LB_OKAY;
@ -2485,7 +2485,7 @@ static BOOL LISTBOX_Create( HWND hwnd, LPHEADCOMBO lphc )
descr->item_height = 1; descr->item_height = 1;
descr->page_size = 1; descr->page_size = 1;
descr->column_width = 150; descr->column_width = 150;
descr->horz_extent = (descr->style & WS_HSCROLL) ? 1 : 0; descr->horz_extent = 0;
descr->horz_pos = 0; descr->horz_pos = 0;
descr->nb_tabs = 0; descr->nb_tabs = 0;
descr->tabs = NULL; descr->tabs = NULL;

View File

@ -1617,6 +1617,41 @@ static void test_missing_lbuttonup( void )
DestroyWindow(parent); DestroyWindow(parent);
} }
static void test_extents(void)
{
HWND listbox, parent;
DWORD res;
parent = create_parent();
listbox = create_listbox(WS_CHILD | WS_VISIBLE, parent);
res = SendMessageA(listbox, LB_GETHORIZONTALEXTENT, 0, 0);
ok(res == 0, "Got wrong initial horizontal extent: %u\n", res);
SendMessageA(listbox, LB_SETHORIZONTALEXTENT, 64, 0);
res = SendMessageA(listbox, LB_GETHORIZONTALEXTENT, 0, 0);
ok(res == 64, "Got wrong horizontal extent: %u\n", res);
DestroyWindow(listbox);
listbox = create_listbox(WS_CHILD | WS_VISIBLE | WS_HSCROLL, parent);
res = SendMessageA(listbox, LB_GETHORIZONTALEXTENT, 0, 0);
ok(res == 0, "Got wrong initial horizontal extent: %u\n", res);
SendMessageA(listbox, LB_SETHORIZONTALEXTENT, 64, 0);
res = SendMessageA(listbox, LB_GETHORIZONTALEXTENT, 0, 0);
ok(res == 64, "Got wrong horizontal extent: %u\n", res);
DestroyWindow(listbox);
DestroyWindow(parent);
}
START_TEST(listbox) START_TEST(listbox)
{ {
const struct listbox_test SS = const struct listbox_test SS =
@ -1698,4 +1733,5 @@ START_TEST(listbox)
test_set_count(); test_set_count();
test_GetListBoxInfo(); test_GetListBoxInfo();
test_missing_lbuttonup(); test_missing_lbuttonup();
test_extents();
} }