Module: wine Branch: master Commit: a27db5169ca0b0990ce8a3cfd0e2814bbaae9329 URL: https://source.winehq.org/git/wine.git/?a=commit;h=a27db5169ca0b0990ce8a3cfd...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Fri Nov 23 10:16:13 2018 +0300
comctl32/listbox: Use helper to test for selected state on painting.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/comctl32/listbox.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/dlls/comctl32/listbox.c b/dlls/comctl32/listbox.c index a2085ed..51f6115 100644 --- a/dlls/comctl32/listbox.c +++ b/dlls/comctl32/listbox.c @@ -491,7 +491,13 @@ static void LISTBOX_PaintItem( LB_DESCR *descr, HDC hdc, const RECT *rect, INT index, UINT action, BOOL ignoreFocus ) { LB_ITEMDATA *item = NULL; - if (index < descr->nb_items) item = &descr->items[index]; + BOOL selected = FALSE; + + if (index < descr->nb_items) + { + item = &descr->items[index]; + selected = is_item_selected(descr, index); + }
if (IS_OWNERDRAW(descr)) { @@ -522,7 +528,8 @@ static void LISTBOX_PaintItem( LB_DESCR *descr, HDC hdc, const RECT *rect, dis.hDC = hdc; dis.itemID = index; dis.itemState = 0; - if (item->selected) dis.itemState |= ODS_SELECTED; + if (selected) + dis.itemState |= ODS_SELECTED; if (!ignoreFocus && (descr->focus_item == index) && (descr->caret_on) && (descr->in_focus)) dis.itemState |= ODS_FOCUS; @@ -545,7 +552,7 @@ static void LISTBOX_PaintItem( LB_DESCR *descr, HDC hdc, const RECT *rect, DrawFocusRect( hdc, rect ); return; } - if (item && item->selected) + if (selected) { oldBk = SetBkColor( hdc, GetSysColor( COLOR_HIGHLIGHT ) ); oldText = SetTextColor( hdc, GetSysColor(COLOR_HIGHLIGHTTEXT)); @@ -570,7 +577,7 @@ static void LISTBOX_PaintItem( LB_DESCR *descr, HDC hdc, const RECT *rect, item->str, strlenW(item->str), descr->nb_tabs, descr->tabs, 0); } - if (item && item->selected) + if (selected) { SetBkColor( hdc, oldBk ); SetTextColor( hdc, oldText );