summaryrefslogtreecommitdiff
path: root/vcl/qt5
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/qt5')
-rw-r--r--vcl/qt5/Qt5Instance.cxx18
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>