summaryrefslogtreecommitdiff
path: root/vcl/qt5/Qt5Instance.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/qt5/Qt5Instance.cxx')
-rw-r--r--vcl/qt5/Qt5Instance.cxx8
1 files changed, 8 insertions, 0 deletions
diff --git a/vcl/qt5/Qt5Instance.cxx b/vcl/qt5/Qt5Instance.cxx
index f780860dccc5..8215b67b71ea 100644
--- a/vcl/qt5/Qt5Instance.cxx
+++ b/vcl/qt5/Qt5Instance.cxx
@@ -64,6 +64,8 @@ Qt5Instance::Qt5Instance(bool bUseCairo)
// is processed before the thread emitting the signal continues
connect(this, SIGNAL(ImplYieldSignal(bool, bool)), this, SLOT(ImplYield(bool, bool)),
Qt::BlockingQueuedConnection);
+ connect(this, &Qt5Instance::createMenuSignal, this, &Qt5Instance::CreateMenu,
+ Qt::BlockingQueuedConnection);
}
Qt5Instance::~Qt5Instance()
@@ -119,6 +121,12 @@ Qt5Instance::CreateVirtualDevice(SalGraphics* pGraphics, long& nDX, long& nDY, D
std::unique_ptr<SalMenu> Qt5Instance::CreateMenu(bool bMenuBar, Menu* pVCLMenu)
{
+ if (qApp->thread() != QThread::currentThread())
+ {
+ SolarMutexReleaser aReleaser;
+ return Q_EMIT createMenuSignal(bMenuBar, pVCLMenu);
+ }
+
Qt5Menu* pSalMenu = new Qt5Menu(bMenuBar);
pSalMenu->SetMenu(pVCLMenu);
return std::unique_ptr<SalMenu>(pSalMenu);