From f9669af2cfa6afdf6567ded5159c45ea8ab6c947 Mon Sep 17 00:00:00 2001 From: ValdikSS ValdikSS Date: Fri, 27 Aug 2021 22:50:13 +0300 Subject: [PATCH] Trim very long text strings in Klipper history view Klipper may freeze the whole plasmashell for tens of seconds trying to render very long text string from history in the popup. Trim very large strings to 200 characters (tooltip default) to prevent this. BUG: 431673 --- klipper/historystringitem.cpp | 6 ++++++ klipper/historystringitem.h | 5 ----- klipper/klipper.cpp | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/klipper/historystringitem.cpp b/klipper/historystringitem.cpp index c7087d62c..73964a2f9 100644 --- a/klipper/historystringitem.cpp +++ b/klipper/historystringitem.cpp @@ -25,3 +25,9 @@ QMimeData *HistoryStringItem::mimeData() const data->setText(m_data); return data; } + +QString HistoryStringItem::text() const +{ + const int TEXT_LENGTH_LIMIT = 200; + return m_data.left(TEXT_LENGTH_LIMIT - 1) + (m_data.length() <= TEXT_LENGTH_LIMIT ? QStringLiteral("") : QStringLiteral("…")); +} diff --git a/klipper/historystringitem.h b/klipper/historystringitem.h index 2336ab530..add5d20bd 100644 --- a/klipper/historystringitem.h +++ b/klipper/historystringitem.h @@ -37,8 +37,3 @@ public: private: QString m_data; }; - -inline QString HistoryStringItem::text() const -{ - return m_data; -} diff --git a/klipper/klipper.cpp b/klipper/klipper.cpp index c83731a5f..9f1c028e0 100644 --- a/klipper/klipper.cpp +++ b/klipper/klipper.cpp @@ -870,7 +870,7 @@ void Klipper::editData(const QSharedPointer &item) KTextEdit *edit = new KTextEdit(dlg); edit->setAcceptRichText(false); if (item) { - edit->setPlainText(item->text()); + edit->setPlainText(item->mimeData()->text()); } edit->setFocus(); edit->setMinimumSize(300, 40);