From: Gabriel Ivăncescu Subject: [PATCH v2 1/8] comctl32/listbox: Make SetCount fail if LBS_NODATA is not set Message-Id: <1db722c508148083fe099a2631ce320729c1553e.1537459289.git.gabrielopcode@gmail.com> Date: Thu, 20 Sep 2018 19:02:43 +0300 Signed-off-by: Gabriel Ivăncescu --- Supersedes series starting with 151474. v2: Looks like Windows accepts both LBS_OWNERDRAWFIXED and LBS_OWNERDRAWVARIABLE at once, for some stupid reason, and only LBS_OWNERDRAWFIXED takes effect (based on testing on Windows XP). So keep LBS_NODATA if they're both set. dlls/comctl32/listbox.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dlls/comctl32/listbox.c b/dlls/comctl32/listbox.c index 2137ef8..0a7c341 100644 --- a/dlls/comctl32/listbox.c +++ b/dlls/comctl32/listbox.c @@ -1752,7 +1752,7 @@ static LRESULT LISTBOX_SetCount( LB_DESCR *descr, INT count ) { LRESULT ret; - if (HAS_STRINGS(descr)) + if (!(descr->style & LBS_NODATA)) { SetLastError(ERROR_SETCOUNT_ON_BAD_LB); return LB_ERR; @@ -2518,6 +2518,9 @@ static BOOL LISTBOX_Create( HWND hwnd, LPHEADCOMBO lphc ) if (descr->style & LBS_OWNERDRAWVARIABLE) descr->style |= LBS_NOINTEGRALHEIGHT; descr->item_height = LISTBOX_SetFont( descr, 0 ); + if ((descr->style & (LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_SORT)) != LBS_OWNERDRAWFIXED) + descr->style &= ~LBS_NODATA; + if (descr->style & LBS_OWNERDRAWFIXED) { if( descr->lphc && (descr->lphc->dwStyle & CBS_DROPDOWN)) -- 1.9.1