diff options
Diffstat (limited to 'vcl/qt5')
-rw-r--r-- | vcl/qt5/Qt5Instance.cxx | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/vcl/qt5/Qt5Instance.cxx b/vcl/qt5/Qt5Instance.cxx index 0358ecd548a6..52eab795682e 100644 --- a/vcl/qt5/Qt5Instance.cxx +++ b/vcl/qt5/Qt5Instance.cxx @@ -394,18 +394,32 @@ void Qt5Instance::ProcessEvent(SalUserEvent aEvent) aEvent.m_pFrame->CallCallback(aEvent.m_nEvent, aEvent.m_pData); } +Qt5FilePicker* Qt5Instance::createPicker(QFileDialog::FileMode eMode) +{ + if (!IsMainThread()) + { + SolarMutexGuard g; + Qt5FilePicker* pPicker; + RunInMainThread(std::function([&, this]() { pPicker = createPicker(eMode); })); + assert(pPicker); + return pPicker; + } + + return new Qt5FilePicker(eMode); +} + css::uno::Reference<css::ui::dialogs::XFilePicker2> Qt5Instance::createFilePicker(const css::uno::Reference<css::uno::XComponentContext>&) { return css::uno::Reference<css::ui::dialogs::XFilePicker2>( - new Qt5FilePicker(QFileDialog::ExistingFile)); + createPicker(QFileDialog::ExistingFile)); } css::uno::Reference<css::ui::dialogs::XFolderPicker2> Qt5Instance::createFolderPicker(const css::uno::Reference<css::uno::XComponentContext>&) { return css::uno::Reference<css::ui::dialogs::XFolderPicker2>( - new Qt5FilePicker(QFileDialog::Directory)); + createPicker(QFileDialog::Directory)); } css::uno::Reference<css::uno::XInterface> |