mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-07-23 22:04:55 +02:00
Fix folder picker not displying as the given directory is invalid issue
Fix #9569, close #9570
This commit is contained in:
parent
064d844a41
commit
91a570a305
@ -535,8 +535,16 @@ public:
|
|||||||
if (SUCCEEDED(hr) && _title)
|
if (SUCCEEDED(hr) && _title)
|
||||||
hr = _dialog->SetTitle(_title);
|
hr = _dialog->SetTitle(_title);
|
||||||
|
|
||||||
if (SUCCEEDED(hr) && _folder)
|
if (SUCCEEDED(hr))
|
||||||
hr = setFolder(_folder) ? S_OK : E_FAIL;
|
{
|
||||||
|
// Do not fail the initialization if failed to set a folder.
|
||||||
|
bool isFolderSet = false;
|
||||||
|
if (!_initialFolder.empty())
|
||||||
|
isFolderSet = setDialogFolder(_dialog, _initialFolder.c_str());
|
||||||
|
|
||||||
|
if (!isFolderSet && !_fallbackFolder.empty())
|
||||||
|
isFolderSet = setDialogFolder(_dialog, _fallbackFolder.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
if (SUCCEEDED(hr) && _defExt && _defExt[0] != '\0')
|
if (SUCCEEDED(hr) && _defExt && _defExt[0] != '\0')
|
||||||
hr = _dialog->SetDefaultExtension(_defExt);
|
hr = _dialog->SetDefaultExtension(_defExt);
|
||||||
@ -614,11 +622,6 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool setFolder(const TCHAR* dir)
|
|
||||||
{
|
|
||||||
return setDialogFolder(_dialog, dir);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool show()
|
bool show()
|
||||||
{
|
{
|
||||||
bool okPressed = false;
|
bool okPressed = false;
|
||||||
@ -708,7 +711,8 @@ public:
|
|||||||
HWND _hwndOwner = nullptr;
|
HWND _hwndOwner = nullptr;
|
||||||
const TCHAR* _title = nullptr;
|
const TCHAR* _title = nullptr;
|
||||||
const TCHAR* _defExt = nullptr;
|
const TCHAR* _defExt = nullptr;
|
||||||
const TCHAR* _folder = nullptr;
|
generic_string _initialFolder;
|
||||||
|
generic_string _fallbackFolder;
|
||||||
const TCHAR* _checkboxLabel = nullptr;
|
const TCHAR* _checkboxLabel = nullptr;
|
||||||
const TCHAR* _initialFileName = nullptr;
|
const TCHAR* _initialFileName = nullptr;
|
||||||
bool _isCheckboxActive = true;
|
bool _isCheckboxActive = true;
|
||||||
@ -727,6 +731,11 @@ private:
|
|||||||
CustomFileDialog::CustomFileDialog(HWND hwnd) : _impl{std::make_unique<Impl>()}
|
CustomFileDialog::CustomFileDialog(HWND hwnd) : _impl{std::make_unique<Impl>()}
|
||||||
{
|
{
|
||||||
_impl->_hwndOwner = hwnd;
|
_impl->_hwndOwner = hwnd;
|
||||||
|
|
||||||
|
NppParameters& params = NppParameters::getInstance();
|
||||||
|
const TCHAR* workDir = params.getWorkingDir();
|
||||||
|
if (workDir)
|
||||||
|
_impl->_fallbackFolder = workDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
CustomFileDialog::~CustomFileDialog() = default;
|
CustomFileDialog::~CustomFileDialog() = default;
|
||||||
@ -755,7 +764,6 @@ void CustomFileDialog::setExtFilter(const TCHAR *extText, const TCHAR *exts)
|
|||||||
_impl->_filterSpec.push_back({ extText, newExts });
|
_impl->_filterSpec.push_back({ extText, newExts });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CustomFileDialog::setExtFilter(const TCHAR *extText, std::initializer_list<const TCHAR*> extList)
|
void CustomFileDialog::setExtFilter(const TCHAR *extText, std::initializer_list<const TCHAR*> extList)
|
||||||
{
|
{
|
||||||
generic_string exts;
|
generic_string exts;
|
||||||
@ -780,7 +788,7 @@ void CustomFileDialog::setDefFileName(const TCHAR* fn)
|
|||||||
|
|
||||||
void CustomFileDialog::setFolder(const TCHAR* folder)
|
void CustomFileDialog::setFolder(const TCHAR* folder)
|
||||||
{
|
{
|
||||||
_impl->_folder = folder;
|
_impl->_initialFolder = folder ? folder : _T("");
|
||||||
}
|
}
|
||||||
|
|
||||||
void CustomFileDialog::setCheckbox(const TCHAR* text, bool isActive)
|
void CustomFileDialog::setCheckbox(const TCHAR* text, bool isActive)
|
||||||
@ -811,9 +819,6 @@ generic_string CustomFileDialog::doSaveDlg()
|
|||||||
|
|
||||||
CurrentDirBackup backup;
|
CurrentDirBackup backup;
|
||||||
|
|
||||||
NppParameters& params = NppParameters::getInstance();
|
|
||||||
_impl->setFolder(params.getWorkingDir());
|
|
||||||
|
|
||||||
_impl->addFlags(FOS_PATHMUSTEXIST | FOS_FILEMUSTEXIST | FOS_FORCEFILESYSTEM);
|
_impl->addFlags(FOS_PATHMUSTEXIST | FOS_FILEMUSTEXIST | FOS_FORCEFILESYSTEM);
|
||||||
bool bOk = _impl->show();
|
bool bOk = _impl->show();
|
||||||
return bOk ? _impl->getResultFilename() : _T("");
|
return bOk ? _impl->getResultFilename() : _T("");
|
||||||
@ -826,9 +831,6 @@ generic_string CustomFileDialog::doOpenSingleFileDlg()
|
|||||||
|
|
||||||
CurrentDirBackup backup;
|
CurrentDirBackup backup;
|
||||||
|
|
||||||
NppParameters& params = NppParameters::getInstance();
|
|
||||||
_impl->setFolder(params.getWorkingDir());
|
|
||||||
|
|
||||||
_impl->addFlags(FOS_PATHMUSTEXIST | FOS_FILEMUSTEXIST | FOS_FORCEFILESYSTEM);
|
_impl->addFlags(FOS_PATHMUSTEXIST | FOS_FILEMUSTEXIST | FOS_FORCEFILESYSTEM);
|
||||||
bool bOk = _impl->show();
|
bool bOk = _impl->show();
|
||||||
return bOk ? _impl->getResultFilename() : _T("");
|
return bOk ? _impl->getResultFilename() : _T("");
|
||||||
@ -841,9 +843,6 @@ std::vector<generic_string> CustomFileDialog::doOpenMultiFilesDlg()
|
|||||||
|
|
||||||
CurrentDirBackup backup;
|
CurrentDirBackup backup;
|
||||||
|
|
||||||
NppParameters& params = NppParameters::getInstance();
|
|
||||||
_impl->setFolder(params.getWorkingDir());
|
|
||||||
|
|
||||||
_impl->addFlags(FOS_PATHMUSTEXIST | FOS_FILEMUSTEXIST | FOS_FORCEFILESYSTEM | FOS_ALLOWMULTISELECT);
|
_impl->addFlags(FOS_PATHMUSTEXIST | FOS_FILEMUSTEXIST | FOS_FORCEFILESYSTEM | FOS_ALLOWMULTISELECT);
|
||||||
bool bOk = _impl->show();
|
bool bOk = _impl->show();
|
||||||
if (bOk)
|
if (bOk)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user