[PATCH 3/4] comctl32/listbox: Scroll to specified caret index. (original) (raw)

Nikolay Sivov nsivov at codeweavers.com
Wed Dec 11 06:17:51 CST 2019


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>

dlls/comctl32/listbox.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/dlls/comctl32/listbox.c b/dlls/comctl32/listbox.c index 0d6dcd6a0b..2b8c2ba086 100644 --- a/dlls/comctl32/listbox.c +++ b/dlls/comctl32/listbox.c @@ -1462,19 +1462,23 @@ static void LISTBOX_MakeItemVisible( LB_DESCR *descr, INT index, BOOL fully ) */ static LRESULT LISTBOX_SetCaretIndex( LB_DESCR *descr, INT index, BOOL fully_visible ) { - INT oldfocus = descr->focus_item; + BOOL focus_changed = descr->focus_item != index; - TRACE("old focus %d, index %d\n", oldfocus, index); + TRACE("old focus %d, index %d\n", descr->focus_item, index); if (descr->style & LBS_NOSEL) return LB_ERR; if ((index < 0) || (index >= descr->nb_items)) return LB_ERR; - if (index == oldfocus) return LB_OKAY; - LISTBOX_DrawFocusRect( descr, FALSE ); - descr->focus_item = index; + if (focus_changed) + { + LISTBOX_DrawFocusRect( descr, FALSE ); + descr->focus_item = index; + } LISTBOX_MakeItemVisible( descr, index, fully_visible ); - LISTBOX_DrawFocusRect( descr, TRUE ); + + if (focus_changed) + LISTBOX_DrawFocusRect( descr, TRUE ); return LB_OKAY; }

2.24.0



More information about the wine-devel mailing list