Module: wine Branch: master Commit: 873799df246ea107a139ec898686490b20a1de7b URL: http://source.winehq.org/git/wine.git/?a=commit;h=873799df246ea107a139ec8986...
Author: Alex Villacís Lasso a_villacis@palosanto.com Date: Sat Nov 10 18:08:06 2007 -0500
user32: Fix returned value of LB_DIR.
---
dlls/user32/listbox.c | 26 ++++++++++++++++---------- 1 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/dlls/user32/listbox.c b/dlls/user32/listbox.c index 7ec97dd..5d99670 100644 --- a/dlls/user32/listbox.c +++ b/dlls/user32/listbox.c @@ -1815,6 +1815,7 @@ static LRESULT LISTBOX_Directory( LB_DESCR *descr, UINT attrib, LRESULT ret = LB_OKAY; WIN32_FIND_DATAW entry; int pos; + LRESULT maxinsert = LB_ERR;
/* don't scan directory if we just want drives exclusively */ if (attrib != (DDL_DRIVES | DDL_EXCLUSIVE)) { @@ -1860,22 +1861,27 @@ static LRESULT LISTBOX_Directory( LB_DESCR *descr, UINT attrib, pos = LISTBOX_FindFileStrPos( descr, buffer ); if ((ret = LISTBOX_InsertString( descr, pos, buffer )) < 0) break; + if (ret <= maxinsert) maxinsert++; else maxinsert = ret; } while (FindNextFileW( handle, &entry )); FindClose( handle ); } } - - /* scan drives */ - if ((ret >= 0) && (attrib & DDL_DRIVES)) + if (ret >= 0) { - WCHAR buffer[] = {'[','-','a','-',']',0}; - WCHAR root[] = {'A',':','\',0}; - int drive; - for (drive = 0; drive < 26; drive++, buffer[2]++, root[0]++) + ret = maxinsert; + + /* scan drives */ + if (attrib & DDL_DRIVES) { - if (GetDriveTypeW(root) <= DRIVE_NO_ROOT_DIR) continue; - if ((ret = LISTBOX_InsertString( descr, -1, buffer )) < 0) - break; + WCHAR buffer[] = {'[','-','a','-',']',0}; + WCHAR root[] = {'A',':','\',0}; + int drive; + for (drive = 0; drive < 26; drive++, buffer[2]++, root[0]++) + { + if (GetDriveTypeW(root) <= DRIVE_NO_ROOT_DIR) continue; + if ((ret = LISTBOX_InsertString( descr, -1, buffer )) < 0) + break; + } } } return ret;