[PATCH 2/5] user32/listbox: Use helper to test for selected state on painting.
Nikolay Sivov
nsivov at codeweavers.com
Mon Dec 3 04:32:07 CST 2018
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/user32/listbox.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/dlls/user32/listbox.c b/dlls/user32/listbox.c
index 3eee691086..6dbf8d9c4f 100644
--- a/dlls/user32/listbox.c
+++ b/dlls/user32/listbox.c
@@ -516,7 +516,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))
{
@@ -547,7 +553,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;
@@ -570,7 +577,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));
@@ -595,7 +602,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 );
--
2.19.2
More information about the wine-devel
mailing list