vcl/inc/qt5/QtClipboard.hxx | 8 +++----- vcl/qt5/QtClipboard.cxx | 14 -------------- vcl/qt5/QtInstance.cxx | 14 ++++++++++++-- 3 files changed, 15 insertions(+), 21 deletions(-)
New commits: commit e015ab29dfbe3c2dab0a1fc290ebb8112166a0d2 Author: Michael Weghorn <[email protected]> AuthorDate: Fri Feb 27 12:39:16 2026 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Sat Feb 28 09:16:40 2026 +0100 qt: Move QtClipboard::create logic to only caller This also prepares for an upcoming refactor to pass more specific args to SalInstance::CreateClipboard. The original purpose of QtClipboard::create "to construct only valid QtClipboard objects by name" is obsolete since previous commit Change-Id: Ifa77093ce43b70c6e048ed0cc8c083eacc1bec59 Author: Michael Weghorn <[email protected]> Date: Fri Feb 27 12:15:49 2026 +0100 qt: Don't store clipboard name in QtClipboard anyway. Change-Id: Ia06c7779912949a21e14be933e945e899209d33c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200617 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/vcl/inc/qt5/QtClipboard.hxx b/vcl/inc/qt5/QtClipboard.hxx index 6b7283769992..e1185aff3eb1 100644 --- a/vcl/inc/qt5/QtClipboard.hxx +++ b/vcl/inc/qt5/QtClipboard.hxx @@ -51,9 +51,6 @@ class QtClipboard final std::vector<css::uno::Reference<css::datatransfer::clipboard::XClipboardListener>> m_aListeners; bool isOwner(const QClipboard::Mode eMode); - static bool isSupported(const QClipboard::Mode eMode); - - explicit QtClipboard(const QClipboard::Mode eMode); private Q_SLOTS: void handleChanged(QClipboard::Mode eMode); @@ -63,8 +60,9 @@ signals: void clearClipboard(); public: - // factory function to construct only valid QtClipboard objects by name - static rtl::Reference<QtClipboard> create(const OUString& aModeString); + explicit QtClipboard(const QClipboard::Mode eMode); + + static bool isSupported(const QClipboard::Mode eMode); // XServiceInfo virtual OUString SAL_CALL getImplementationName() override; diff --git a/vcl/qt5/QtClipboard.cxx b/vcl/qt5/QtClipboard.cxx index 3666e366c6cc..defd2ab5d391 100644 --- a/vcl/qt5/QtClipboard.cxx +++ b/vcl/qt5/QtClipboard.cxx @@ -47,20 +47,6 @@ QtClipboard::QtClipboard(const QClipboard::Mode eMode) Qt::QueuedConnection); } -rtl::Reference<QtClipboard> QtClipboard::create(const OUString& aModeString) -{ - static const std::map<OUString, QClipboard::Mode> aNameToClipboardMap - = { { "CLIPBOARD", QClipboard::Clipboard }, { "PRIMARY", QClipboard::Selection } }; - - assert(QApplication::clipboard()->thread() == qApp->thread()); - - auto iter = aNameToClipboardMap.find(aModeString); - if (iter != aNameToClipboardMap.end() && isSupported(iter->second)) - return new QtClipboard(iter->second); - SAL_WARN("vcl.qt", "Ignoring unrecognized clipboard type: '" << aModeString << "'"); - return nullptr; -} - void QtClipboard::flushClipboard() { SolarMutexGuard g; diff --git a/vcl/qt5/QtInstance.cxx b/vcl/qt5/QtInstance.cxx index f8fd10f223b5..62446e9cc21b 100644 --- a/vcl/qt5/QtInstance.cxx +++ b/vcl/qt5/QtInstance.cxx @@ -668,8 +668,18 @@ QtInstance::CreateClipboard(const css::uno::Sequence<css::uno::Any>& arguments) if (it != m_aClipboards.end()) return it->second; - rtl::Reference<QtClipboard> pClipboard - = EmscriptenLightweightRunInMainThread([&sel] { return QtClipboard::create(sel); }); + rtl::Reference<QtClipboard> pClipboard = EmscriptenLightweightRunInMainThread([&sel] { + static const std::map<OUString, QClipboard::Mode> aNameToClipboardMap + = { { "CLIPBOARD", QClipboard::Clipboard }, { "PRIMARY", QClipboard::Selection } }; + + assert(QApplication::clipboard()->thread() == qApp->thread()); + + auto iter = aNameToClipboardMap.find(sel); + if (iter != aNameToClipboardMap.end() && QtClipboard::isSupported(iter->second)) + return rtl::Reference<QtClipboard>(new QtClipboard(iter->second)); + SAL_WARN("vcl.qt", "Ignoring unrecognized clipboard type: '" << sel << "'"); + return rtl::Reference<QtClipboard>(); + }); if (pClipboard.is()) m_aClipboards[sel] = pClipboard;
