diff --git a/mozilla/widget/public/nsIFilePicker.idl b/mozilla/widget/public/nsIFilePicker.idl index d5690b890a6..812826bd2d7 100644 --- a/mozilla/widget/public/nsIFilePicker.idl +++ b/mozilla/widget/public/nsIFilePicker.idl @@ -76,6 +76,13 @@ interface nsIFilePicker : nsISupports /* what is this? */ attribute wstring defaultString; + /** + * The filter which is currently selected in the File Picker dialog + * + * @return Returns the index (0 based) of the selected filter in the filter list. + */ + attribute long filterIndex; + /** * Set the directory that the file open/save dialog initially displays * diff --git a/mozilla/widget/src/windows/nsFilePicker.cpp b/mozilla/widget/src/windows/nsFilePicker.cpp index 28e09520148..63543b9f611 100644 --- a/mozilla/widget/src/windows/nsFilePicker.cpp +++ b/mozilla/widget/src/windows/nsFilePicker.cpp @@ -308,6 +308,25 @@ NS_IMETHODIMP nsFilePicker::GetDefaultString(PRUnichar **aString) return NS_ERROR_FAILURE; } +//------------------------------------------------------------------------- +// +// Set the filter index +// +//------------------------------------------------------------------------- +NS_IMETHODIMP nsFilePicker::GetFilterIndex(PRInt32 *aFilterIndex) +{ + // Windows' filter index is 1-based, we use a 0-based system. + *aFilterIndex = mSelectedType - 1; + return NS_OK; +} + +NS_IMETHODIMP nsFilePicker::SetFilterIndex(PRInt32 aFilterIndex) +{ + // Windows' filter index is 1-based, we use a 0-based system. + mSelectedType = aFilterIndex + 1; + return NS_OK; +} + //------------------------------------------------------------------------- // // Set the display directory diff --git a/mozilla/widget/src/windows/nsFilePicker.h b/mozilla/widget/src/windows/nsFilePicker.h index 7dc17efa900..275118133e7 100644 --- a/mozilla/widget/src/windows/nsFilePicker.h +++ b/mozilla/widget/src/windows/nsFilePicker.h @@ -51,6 +51,8 @@ public: NS_IMETHOD SetDefaultString(const PRUnichar * aDefaultString); NS_IMETHOD GetDisplayDirectory(nsILocalFile * *aDisplayDirectory); NS_IMETHOD SetDisplayDirectory(nsILocalFile * aDisplayDirectory); + NS_IMETHOD GetFilterIndex(PRInt32 *aFilterIndex); + NS_IMETHOD SetFilterIndex(PRInt32 aFilterIndex); NS_IMETHOD GetFile(nsILocalFile * *aFile); NS_IMETHOD GetFileURL(nsIFileURL * *aFileURL); NS_IMETHOD Show(PRInt16 *_retval); diff --git a/mozilla/widget/src/xpwidgets/nsBaseFilePicker.cpp b/mozilla/widget/src/xpwidgets/nsBaseFilePicker.cpp index b75a53313c1..79887751a4a 100644 --- a/mozilla/widget/src/xpwidgets/nsBaseFilePicker.cpp +++ b/mozilla/widget/src/xpwidgets/nsBaseFilePicker.cpp @@ -162,4 +162,19 @@ nsBaseFilePicker::AppendFilters(PRInt32 aFilterMask) return NS_OK; } +//------------------------------------------------------------------------- +// +// Set the filter index +// +//------------------------------------------------------------------------- +NS_IMETHODIMP nsBaseFilePicker::GetFilterIndex(PRInt32 *aFilterIndex) +{ + *aFilterIndex = 0; + return NS_OK; +} + +NS_IMETHODIMP nsBaseFilePicker::SetFilterIndex(PRInt32 aFilterIndex) +{ + return NS_OK; +} diff --git a/mozilla/widget/src/xpwidgets/nsBaseFilePicker.h b/mozilla/widget/src/xpwidgets/nsBaseFilePicker.h index fd4fe77f2e1..c714440d35e 100644 --- a/mozilla/widget/src/xpwidgets/nsBaseFilePicker.h +++ b/mozilla/widget/src/xpwidgets/nsBaseFilePicker.h @@ -39,6 +39,8 @@ public: PRInt16 aMode); NS_IMETHOD AppendFilters(PRInt32 filterMask); + NS_IMETHOD GetFilterIndex(PRInt32 *aFilterIndex); + NS_IMETHOD SetFilterIndex(PRInt32 aFilterIndex); protected: