summaryrefslogtreecommitdiff
path: root/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx')
-rw-r--r--fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx24
1 files changed, 17 insertions, 7 deletions
diff --git a/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx b/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx
index 37732bfcf4..5e59853028 100644
--- a/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx
+++ b/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx
@@ -668,6 +668,22 @@ void VistaFilePickerImpl::impl_sta_SetDefaultName(const RequestRef& rRequest)
{
::rtl::OUString sFilename = rRequest->getArgumentOrDefault(PROP_FILENAME, ::rtl::OUString());
TFileDialog iDialog = impl_getBaseDialogInterface();
+
+ TFileDialogCustomize iCustom = impl_getCustomizeInterface();
+ if ( ! iCustom.is())
+ return;
+
+ // if we have the autoextension check box set, remove (or change ???) the extension of the filename
+ // so that the autoextension mechanism can do its job
+ BOOL bValue = FALSE;
+ HRESULT hResult = iCustom->GetCheckButtonState( css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, &bValue);
+ if ( bValue )
+ {
+ sal_Int32 nSepPos = sFilename.lastIndexOf( '.' );
+ if ( -1 != nSepPos )
+ sFilename = sFilename.copy(0, nSepPos);
+ }
+
iDialog->SetFileName ( reinterpret_cast<LPCTSTR>(sFilename.getStr()));
m_sFilename = sFilename;
}
@@ -682,17 +698,11 @@ void VistaFilePickerImpl::impl_sta_setFiltersOnDialog()
::rtl::OUString sCurrentFilter = m_lFilters.getCurrentFilter();
sal_Int32 nCurrentFilter = m_lFilters.getFilterPos(sCurrentFilter);
TFileDialog iDialog = impl_getBaseDialogInterface();
- TFileDialogCustomize iCustomize;
+ TFileDialogCustomize iCustomize = impl_getCustomizeInterface();
aLock.clear();
// <- SYNCHRONIZED
-#ifdef __MINGW32__
- iDialog->QueryInterface(IID_IFileDialog, (void **)(&iCustomize));
-#else
- iDialog.query(&iCustomize);
-#endif
-
COMDLG_FILTERSPEC *pFilt = &lFilters[0];
iDialog->SetFileTypes(lFilters.size(), pFilt/*&lFilters[0]*/);
iDialog->SetFileTypeIndex(nCurrentFilter + 1);