Bug 472487. Use the default filename in modeOpen in the Mac filepicker (e.g. so that file inputs prefill the currently-selected file in the filepicker). r=josh, sr=roc

This commit is contained in:
Boris Zbarsky 2009-01-12 10:43:27 -05:00
Родитель 76730b154f
Коммит b1874783b6
2 изменённых файлов: 9 добавлений и 5 удалений

Просмотреть файл

@ -87,7 +87,7 @@ protected:
// aFile is an existing but unspecified file. These functions must specify it.
//
// will return |returnCancel| or |returnOK| as result.
PRInt16 GetLocalFiles(const nsString& inTitle, PRBool inAllowMultiple, nsCOMArray<nsILocalFile>& outFiles);
PRInt16 GetLocalFiles(const nsString& inTitle, const nsString& inDefaultName, PRBool inAllowMultiple, nsCOMArray<nsILocalFile>& outFiles);
PRInt16 GetLocalFolder(const nsString& inTitle, nsILocalFile** outFile);
PRInt16 PutLocalFile(const nsString& inTitle, const nsString& inDefaultName, nsILocalFile** outFile);

Просмотреть файл

@ -198,11 +198,11 @@ NS_IMETHODIMP nsFilePicker::Show(PRInt16 *retval)
switch (mMode)
{
case modeOpen:
userClicksOK = GetLocalFiles(mTitle, PR_FALSE, mFiles);
userClicksOK = GetLocalFiles(mTitle, mDefault, PR_FALSE, mFiles);
break;
case modeOpenMultiple:
userClicksOK = GetLocalFiles(mTitle, PR_TRUE, mFiles);
userClicksOK = GetLocalFiles(mTitle, mDefault, PR_TRUE, mFiles);
break;
case modeSave:
@ -228,7 +228,7 @@ NS_IMETHODIMP nsFilePicker::Show(PRInt16 *retval)
// Use OpenPanel to do a GetFile. Returns |returnOK| if the user presses OK in the dialog.
PRInt16
nsFilePicker::GetLocalFiles(const nsString& inTitle, PRBool inAllowMultiple, nsCOMArray<nsILocalFile>& outFiles)
nsFilePicker::GetLocalFiles(const nsString& inTitle, const nsString& inDefaultName, PRBool inAllowMultiple, nsCOMArray<nsILocalFile>& outFiles)
{
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN;
@ -251,6 +251,9 @@ nsFilePicker::GetLocalFiles(const nsString& inTitle, PRBool inAllowMultiple, nsC
if (!filters)
[thePanel setTreatsFilePackagesAsDirectories:NO];
// set up default file name
NSString* defaultFilename = [NSString stringWithCharacters:(const unichar*)inDefaultName.get() length:inDefaultName.Length()];
// set up default directory
NSString *theDir = PanelDefaultDirectory();
@ -262,7 +265,8 @@ nsFilePicker::GetLocalFiles(const nsString& inTitle, PRBool inAllowMultiple, nsC
}
nsCocoaUtils::PrepareForNativeAppModalDialog();
int result = [thePanel runModalForDirectory:theDir file:nil types:filters];
int result = [thePanel runModalForDirectory:theDir file:defaultFilename
types:filters];
nsCocoaUtils::CleanUpAfterNativeAppModalDialog();
if (result == NSFileHandlingPanelCancelButton)