tdf#119856: thread-proof kde5 fpicker execute() and getFiles()

so they can be called from extensions

Change-Id: I58b4ee25ef9a58a8d051ffd542119984973095f0
Reviewed-on: https://gerrit.libreoffice.org/62728
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
diff --git a/vcl/unx/kde5/KDE5FilePicker.hxx b/vcl/unx/kde5/KDE5FilePicker.hxx
index df7d849..8179170 100644
--- a/vcl/unx/kde5/KDE5FilePicker.hxx
+++ b/vcl/unx/kde5/KDE5FilePicker.hxx
@@ -185,6 +185,7 @@ Q_SIGNALS:
                                 const css::uno::Sequence<css::beans::StringPair>& rFilters);
    void setCurrentFilterSignal(const OUString& rFilter);
    OUString getCurrentFilterSignal();
    css::uno::Sequence<OUString> getFilesSignal();
    css::uno::Sequence<OUString> getSelectedFilesSignal();
    void setMultiSelectionSignal(bool bMulti);

diff --git a/vcl/unx/kde5/KDE5FilePicker2.cxx b/vcl/unx/kde5/KDE5FilePicker2.cxx
index 576318e..553ed85 100644
--- a/vcl/unx/kde5/KDE5FilePicker2.cxx
+++ b/vcl/unx/kde5/KDE5FilePicker2.cxx
@@ -106,7 +106,8 @@ KDE5FilePicker::KDE5FilePicker(QFileDialog::FileMode eMode)

    connect(_dialog, &QFileDialog::filterSelected, this, &KDE5FilePicker::filterChanged);
    connect(_dialog, &QFileDialog::fileSelected, this, &KDE5FilePicker::selectionChanged);
    connect(this, &KDE5FilePicker::executeSignal, this, &KDE5FilePicker::execute);
    connect(this, &KDE5FilePicker::executeSignal, this, &KDE5FilePicker::execute,
            Qt::BlockingQueuedConnection);

    // XExecutableDialog
    connect(this, &KDE5FilePicker::setTitleSignal, this, &KDE5FilePicker::setTitleSlot,
@@ -147,6 +148,8 @@ KDE5FilePicker::KDE5FilePicker(QFileDialog::FileMode eMode)
    // XFilePicker2
    connect(this, &KDE5FilePicker::getSelectedFilesSignal, this,
            &KDE5FilePicker::getSelectedFilesSlot, Qt::BlockingQueuedConnection);
    connect(this, &KDE5FilePicker::getFilesSignal, this, &KDE5FilePicker::getFiles,
            Qt::BlockingQueuedConnection);

    qApp->installEventFilter(this);
}
@@ -186,6 +189,7 @@ sal_Int16 SAL_CALL KDE5FilePicker::execute()
{
    if (qApp->thread() != QThread::currentThread())
    {
        //SolarMutexReleaser aReleaser;
        return Q_EMIT executeSignal();
    }

@@ -250,6 +254,12 @@ OUString SAL_CALL KDE5FilePicker::getDisplayDirectory()

uno::Sequence<OUString> SAL_CALL KDE5FilePicker::getFiles()
{
    if (qApp->thread() != QThread::currentThread())
    {
        //SolarMutexReleaser aReleaser;
        return Q_EMIT getFilesSignal();
    }

    uno::Sequence<OUString> seq = getSelectedFiles();
    if (seq.getLength() > 1)
        seq.realloc(1);