File indexing completed on 2023-11-26 07:30:40
0001 /* 0002 SPDX-FileCopyrightText: 2020 David Edmundson <davidedmundson@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "ksystemclipboard.h" 0008 #include "kguiaddons_debug.h" 0009 0010 #include "qtclipboard_p.h" 0011 #include "waylandclipboard_p.h" 0012 0013 #include <QDebug> 0014 #include <QGuiApplication> 0015 #include <QMimeData> 0016 0017 KSystemClipboard *KSystemClipboard::instance() 0018 { 0019 if (!qGuiApp || qGuiApp->closingDown()) { 0020 return nullptr; 0021 } 0022 static KSystemClipboard *systemClipboard = nullptr; 0023 0024 #ifdef WITH_WAYLAND 0025 static bool s_waylandChecked = false; 0026 if (!systemClipboard && qGuiApp->platformName() == QLatin1String("wayland") && !s_waylandChecked) { 0027 WaylandClipboard *waylandClipboard = new WaylandClipboard(qApp); 0028 s_waylandChecked = true; 0029 0030 if (waylandClipboard->isValid()) { 0031 systemClipboard = waylandClipboard; 0032 } else { 0033 delete waylandClipboard; 0034 qCWarning(KGUIADDONS_LOG) << "Could not init WaylandClipboard, falling back to QtClipboard."; 0035 } 0036 } 0037 #endif 0038 0039 if (!systemClipboard) { 0040 systemClipboard = new QtClipboard(qApp); 0041 } 0042 0043 return systemClipboard; 0044 } 0045 0046 QString KSystemClipboard::text(QClipboard::Mode mode) 0047 { 0048 const QMimeData *data = mimeData(mode); 0049 if (data) { 0050 return data->text(); 0051 } 0052 return QString(); 0053 } 0054 0055 KSystemClipboard::KSystemClipboard(QObject *parent) 0056 : QObject(parent) 0057 { 0058 } 0059 0060 #include "moc_ksystemclipboard.cpp"