mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-09-20 20:10:41 +02:00
nsFilePicker: Fix Browse Folder function in NT 3.51
This commit is contained in:
parent
cc3fbb8f08
commit
1f106e1216
@ -89,6 +89,7 @@ char nsFilePicker::mLastUsedDirectory[MAX_PATH+1] = { 0 };
|
|||||||
nsFilePicker::nsFilePicker()
|
nsFilePicker::nsFilePicker()
|
||||||
{
|
{
|
||||||
mSelectedType = 1;
|
mSelectedType = 1;
|
||||||
|
mWinVer = GetVersion() & 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
@ -153,7 +154,7 @@ NS_IMETHODIMP nsFilePicker::ShowW(PRInt16 *aReturnVal)
|
|||||||
|
|
||||||
#ifndef WINCE
|
#ifndef WINCE
|
||||||
|
|
||||||
if (mMode == modeGetFolder) {
|
if (mMode == modeGetFolder && mWinVer > 3) {
|
||||||
PRUnichar dirBuffer[MAX_PATH+1];
|
PRUnichar dirBuffer[MAX_PATH+1];
|
||||||
wcsncpy(dirBuffer, initialDir.get(), MAX_PATH);
|
wcsncpy(dirBuffer, initialDir.get(), MAX_PATH);
|
||||||
|
|
||||||
@ -244,13 +245,17 @@ NS_IMETHODIMP nsFilePicker::ShowW(PRInt16 *aReturnVal)
|
|||||||
#ifndef WINCE
|
#ifndef WINCE
|
||||||
try {
|
try {
|
||||||
#endif
|
#endif
|
||||||
if (mMode == modeOpen) {
|
if (mMode == modeOpen || mMode == modeGetFolder) {
|
||||||
// FILE MUST EXIST!
|
// FILE MUST EXIST!
|
||||||
ofn.Flags |= OFN_FILEMUSTEXIST;
|
if(mMode == modeOpen) ofn.Flags |= OFN_FILEMUSTEXIST;
|
||||||
|
else {
|
||||||
|
fileBuffer[0]='t'; fileBuffer[1]='h'; fileBuffer[2]='i'; fileBuffer[3]='s';
|
||||||
|
fileBuffer[4]='D'; fileBuffer[5]='i'; fileBuffer[6]='r';
|
||||||
|
}
|
||||||
result = nsToolkit::mGetOpenFileName(&ofn);
|
result = nsToolkit::mGetOpenFileName(&ofn);
|
||||||
}
|
}
|
||||||
else if (mMode == modeOpenMultiple) {
|
else if (mMode == modeOpenMultiple) {
|
||||||
ofn.Flags |= OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_EXPLORER;
|
ofn.Flags |= OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | (mWinVer > 3 ? OFN_EXPLORER : 0);
|
||||||
result = nsToolkit::mGetOpenFileName(&ofn);
|
result = nsToolkit::mGetOpenFileName(&ofn);
|
||||||
}
|
}
|
||||||
else if (mMode == modeSave) {
|
else if (mMode == modeSave) {
|
||||||
@ -345,6 +350,17 @@ NS_IMETHODIMP nsFilePicker::ShowW(PRInt16 *aReturnVal)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
// Get DirPath from Full Pathname
|
||||||
|
if(mMode == modeGetFolder) {
|
||||||
|
int cnt;
|
||||||
|
nsAutoString dirName(fileBuffer);
|
||||||
|
for(cnt=dirName.Length()-1;cnt > 1; cnt--) {
|
||||||
|
if (fileBuffer[cnt] == '\\') {
|
||||||
|
fileBuffer[cnt] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// I think it also needs a conversion here (to unicode since appending to nsString)
|
// I think it also needs a conversion here (to unicode since appending to nsString)
|
||||||
// but doing that generates garbage file name, weird.
|
// but doing that generates garbage file name, weird.
|
||||||
mUnicodeFile.Assign(fileBuffer);
|
mUnicodeFile.Assign(fileBuffer);
|
||||||
|
@ -97,6 +97,7 @@ protected:
|
|||||||
static char mLastUsedDirectory[];
|
static char mLastUsedDirectory[];
|
||||||
nsString mUnicodeFile;
|
nsString mUnicodeFile;
|
||||||
static nsString mLastUsedUnicodeDirectory;
|
static nsString mLastUsedUnicodeDirectory;
|
||||||
|
PRInt32 mWinVer;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // nsFilePicker_h__
|
#endif // nsFilePicker_h__
|
||||||
|
Loading…
Reference in New Issue
Block a user