diff options
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/inc/qt5/Qt5Instance.hxx | 2 | ||||
-rw-r--r-- | vcl/qt5/Qt5Instance.cxx | 13 |
2 files changed, 9 insertions, 6 deletions
diff --git a/vcl/inc/qt5/Qt5Instance.hxx b/vcl/inc/qt5/Qt5Instance.hxx index d848ff219792..91682bd87950 100644 --- a/vcl/inc/qt5/Qt5Instance.hxx +++ b/vcl/inc/qt5/Qt5Instance.hxx @@ -40,7 +40,7 @@ class VCLPLUG_QT5_PUBLIC Qt5Instance : public QObject, osl::Condition m_aWaitingYieldCond; int m_postUserEventId; const bool m_bUseCairo; - css::uno::Reference<css::uno::XInterface> m_xClipboard; + std::unordered_map<OUString, css::uno::Reference<css::uno::XInterface>> m_aClipboards; public: std::unique_ptr<QApplication> m_pQApplication; diff --git a/vcl/qt5/Qt5Instance.cxx b/vcl/qt5/Qt5Instance.cxx index 1acf49d4505a..2e21f2563d90 100644 --- a/vcl/qt5/Qt5Instance.cxx +++ b/vcl/qt5/Qt5Instance.cxx @@ -244,14 +244,17 @@ Qt5Instance::CreateClipboard(const css::uno::Sequence<css::uno::Any>& arguments) css::uno::Reference<css::uno::XInterface>(), -1); } - if (!m_xClipboard.is()) + auto it = m_aClipboards.find(sel); + if (it != m_aClipboards.end()) { - css::uno::Reference<css::uno::XInterface> xClipboard( - static_cast<cppu::OWeakObject*>(new VclQt5Clipboard())); - m_xClipboard = xClipboard; + return it->second; } - return m_xClipboard; + css::uno::Reference<css::uno::XInterface> xClipboard( + static_cast<cppu::OWeakObject*>(new VclQt5Clipboard())); + m_aClipboards[sel] = xClipboard; + + return xClipboard; } Reference<XInterface> Qt5Instance::CreateDragSource() |