=?UTF-8?Q?Gabriel=20Iv=C4=83ncescu=20?=: shell32/autocomplete: Retrieve the count in show_listbox.

Alexandre Julliard julliard at winehq.org
Mon Nov 19 15:59:37 CST 2018


Module: wine
Branch: master
Commit: 7ac4c0ea8c7079988eb162ba447d81896848fd65
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=7ac4c0ea8c7079988eb162ba447d81896848fd65

Author: Gabriel Ivăncescu <gabrielopcode at gmail.com>
Date:   Fri Nov 16 17:38:03 2018 +0200

shell32/autocomplete: Retrieve the count in show_listbox.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/shell32/autocomplete.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/dlls/shell32/autocomplete.c b/dlls/shell32/autocomplete.c
index 6d8988b..c9bf9ff 100644
--- a/dlls/shell32/autocomplete.c
+++ b/dlls/shell32/autocomplete.c
@@ -193,15 +193,16 @@ static void hide_listbox(IAutoCompleteImpl *ac, HWND hwnd, BOOL reset)
     if (reset) free_enum_strs(ac);
 }
 
-static void show_listbox(IAutoCompleteImpl *ac, UINT cnt)
+static void show_listbox(IAutoCompleteImpl *ac)
 {
     RECT r;
-    UINT width, height;
+    UINT cnt, width, height;
 
     GetWindowRect(ac->hwndEdit, &r);
     SendMessageW(ac->hwndListBox, LB_CARETOFF, 0, 0);
 
     /* Windows XP displays 7 lines at most, then it uses a scroll bar */
+    cnt    = SendMessageW(ac->hwndListBox, LB_GETCOUNT, 0, 0);
     height = SendMessageW(ac->hwndListBox, LB_GETITEMHEIGHT, 0, 0) * min(cnt + 1, 7);
     width = r.right - r.left;
 
@@ -404,7 +405,7 @@ static BOOL display_matching_strs(IAutoCompleteImpl *ac, WCHAR *text, UINT len,
 {
     /* Return FALSE if we need to hide the listbox */
     WCHAR **str = ac->enum_strs;
-    UINT cnt, start, end;
+    UINT start, end;
     if (!str) return (ac->options & ACO_AUTOSUGGEST) ? FALSE : TRUE;
 
     /* Windows seems to disable autoappend if ACO_NOPREFIXFILTERING is set */
@@ -432,15 +433,14 @@ static BOOL display_matching_strs(IAutoCompleteImpl *ac, WCHAR *text, UINT len,
         if (end == 0)
             return FALSE;
     }
-    cnt = end - start;
 
     SendMessageW(ac->hwndListBox, WM_SETREDRAW, FALSE, 0);
     SendMessageW(ac->hwndListBox, LB_RESETCONTENT, 0, 0);
-    SendMessageW(ac->hwndListBox, LB_INITSTORAGE, cnt, 0);
+    SendMessageW(ac->hwndListBox, LB_INITSTORAGE, end - start, 0);
     for (; start < end; start++)
         SendMessageW(ac->hwndListBox, LB_INSERTSTRING, -1, (LPARAM)str[start]);
 
-    show_listbox(ac, cnt);
+    show_listbox(ac);
     SendMessageW(ac->hwndListBox, WM_SETREDRAW, TRUE, 0);
     return TRUE;
 }




More information about the wine-cvs mailing list