Kaydet (Commit) 8f71eb51 authored tarafından Katarina Behrens's avatar Katarina Behrens

tdf#119856 related: opening kde5 filepicker from extensions now possible

certain things have to be done exclusively in main thread

Change-Id: Ib9f5a3187080cd986977e323a38a1e6c2ed57366
Reviewed-on: https://gerrit.libreoffice.org/62281Reviewed-by: 's avatarKatarina Behrens <Katarina.Behrens@cib.de>
Tested-by: 's avatarKatarina Behrens <Katarina.Behrens@cib.de>
üst 54f06c00
......@@ -10,6 +10,7 @@
$(eval $(call gb_CustomTarget_CustomTarget,vcl/unx/kde5))
$(call gb_CustomTarget_get_target,vcl/unx/kde5) : \
$(call gb_CustomTarget_get_workdir,vcl/unx/kde5)/KDE5SalInstance.moc \
$(call gb_CustomTarget_get_workdir,vcl/unx/kde5)/KDE5FilePicker.moc \
$(call gb_CustomTarget_get_workdir,vcl/unx/kde5)/tst_exclude_socket_notifiers.moc \
$(call gb_CustomTarget_get_workdir,vcl/unx/kde5)/tst_exclude_posted_events.moc
......
......@@ -168,6 +168,7 @@ protected:
bool eventFilter(QObject* watched, QEvent* event) override;
Q_SIGNALS:
sal_Int16 executeSignal();
void setTitleSignal(const OUString& rTitle);
void setDefaultNameSignal(const OUString& rName);
void setDisplayDirectorySignal(const OUString& rDir);
......
......@@ -106,6 +106,7 @@ 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);
// XExecutableDialog
connect(this, &KDE5FilePicker::setTitleSignal, this, &KDE5FilePicker::setTitleSlot,
......@@ -183,6 +184,11 @@ void SAL_CALL KDE5FilePicker::setTitle(const OUString& title)
sal_Int16 SAL_CALL KDE5FilePicker::execute()
{
if (qApp->thread() != QThread::currentThread())
{
return Q_EMIT executeSignal();
}
if (!_filters.isEmpty())
_dialog->setNameFilters(_filters);
if (!_currentFilter.isEmpty())
......
......@@ -46,6 +46,8 @@ KDE5SalInstance::KDE5SalInstance()
pSVData->maAppData.mxToolkitName = OUString("kde5");
KDE5SalData::initNWF();
connect(this, &KDE5SalInstance::createFilePickerSignal, this,
&KDE5SalInstance::createFilePicker, Qt::BlockingQueuedConnection);
}
SalFrame* KDE5SalInstance::CreateFrame(SalFrame* pParent, SalFrameStyleFlags nState)
......@@ -54,8 +56,13 @@ SalFrame* KDE5SalInstance::CreateFrame(SalFrame* pParent, SalFrameStyleFlags nSt
}
uno::Reference<ui::dialogs::XFilePicker2>
KDE5SalInstance::createFilePicker(const uno::Reference<uno::XComponentContext>& /*xMSF*/)
KDE5SalInstance::createFilePicker(const uno::Reference<uno::XComponentContext>& xMSF)
{
if (!IsMainThread())
{
return Q_EMIT createFilePickerSignal(xMSF);
}
return uno::Reference<ui::dialogs::XFilePicker2>(new KDE5FilePicker(QFileDialog::ExistingFile));
}
......@@ -148,4 +155,5 @@ VCLPLUG_KDE5_PUBLIC SalInstance* create_SalInstance()
}
}
#include <KDE5SalInstance.moc>
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -20,9 +20,9 @@
#pragma once
#include <sal/config.h>
#include <memory>
#include <QtCore/QObject>
#include <qt5/Qt5Instance.hxx>
#include "KDE5SalFrame.hxx"
......@@ -31,19 +31,25 @@ class SalFrame;
class KDE5SalInstance : public Qt5Instance
{
Q_OBJECT
public:
explicit KDE5SalInstance();
virtual SalFrame* CreateFrame(SalFrame* pParent, SalFrameStyleFlags nStyle) override;
virtual bool hasNativeFileSelection() const override { return true; }
virtual css::uno::Reference<css::ui::dialogs::XFilePicker2>
createFilePicker(const css::uno::Reference<css::uno::XComponentContext>&) override;
virtual css::uno::Reference<css::ui::dialogs::XFolderPicker2>
createFolderPicker(const css::uno::Reference<css::uno::XComponentContext>&) override;
virtual bool IsMainThread() const override;
Q_SIGNALS:
css::uno::Reference<css::ui::dialogs::XFilePicker2>
createFilePickerSignal(const css::uno::Reference<css::uno::XComponentContext>&);
private Q_SLOTS:
virtual css::uno::Reference<css::ui::dialogs::XFilePicker2>
createFilePicker(const css::uno::Reference<css::uno::XComponentContext>&) override;
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment