[PATCH 2/2] user32: Set the selection if it's currently invalid in HandleTimer.

Gabriel Ivăncescu gabrielopcode at gmail.com
Wed Apr 28 11:01:34 CDT 2021


Don't skip MoveCaret if it would actually change the selection when it is
invalid. This can happen, for example, in a combo box if the dropdown is
shown by a mouse click + release followed by the mouse being moved into
the dropped listbox, when the listbox has nothing selected. In this case,
the item with the index zero would not be selected the first time the mouse
moves over it, since the focus_item would be zero.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
---
 dlls/user32/listbox.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dlls/user32/listbox.c b/dlls/user32/listbox.c
index 0122f92..f943839 100644
--- a/dlls/user32/listbox.c
+++ b/dlls/user32/listbox.c
@@ -2346,7 +2346,7 @@ static LRESULT LISTBOX_HandleTimer( LB_DESCR *descr, INT index, TIMER_DIRECTION
     case LB_TIMER_NONE:
         break;
     }
-    if (index == descr->focus_item) return FALSE;
+    if (index == descr->focus_item && descr->selected_item != -1) return FALSE;
     LISTBOX_MoveCaret( descr, index, FALSE );
     return TRUE;
 }
-- 
2.30.0




More information about the wine-devel mailing list