summaryrefslogtreecommitdiff
path: root/src/plugins/texteditor/circularclipboard.cpp
diff options
context:
space:
mode:
authorFrancois Ferrand <thetypz@gmail.com>2012-03-12 17:38:54 +0100
committerLeandro Melo <leandro.melo@nokia.com>2012-06-05 12:08:00 +0200
commit6defb83d0362be6b8910b81733c7f4d7895c6b2d (patch)
tree206f307707fae72a76f97f0ca11e8de47a68ab19 /src/plugins/texteditor/circularclipboard.cpp
parent80180ba714e3945c6e23f2c1eec38c4f2fea3ee9 (diff)
downloadqt-creator-6defb83d0362be6b8910b81733c7f4d7895c6b2d.tar.gz
TextEditor: menu for pasting from clipboard history.
Add new action to show a menu of recent clipboard history. When an item is selected, the item is pasted. Change-Id: Id7e1a90730404fb63762bf1f20678484ec34cd2b Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
Diffstat (limited to 'src/plugins/texteditor/circularclipboard.cpp')
-rw-r--r--src/plugins/texteditor/circularclipboard.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/plugins/texteditor/circularclipboard.cpp b/src/plugins/texteditor/circularclipboard.cpp
index bba248a84a..0f4a218f0f 100644
--- a/src/plugins/texteditor/circularclipboard.cpp
+++ b/src/plugins/texteditor/circularclipboard.cpp
@@ -42,7 +42,6 @@ CircularClipboard::CircularClipboard()
CircularClipboard::~CircularClipboard()
{
- qDeleteAll(m_items);
}
CircularClipboard *CircularClipboard::instance()
@@ -53,27 +52,28 @@ CircularClipboard *CircularClipboard::instance()
void CircularClipboard::collect(const QMimeData *mimeData)
{
+ collect(QSharedPointer<const QMimeData>(mimeData));
+}
+
+void CircularClipboard::collect(const QSharedPointer<const QMimeData> &mimeData)
+{
//Avoid duplicates
const QString text = mimeData->text();
- for (QList<const QMimeData *>::iterator i = m_items.begin(); i != m_items.end(); ++i) {
+ for (QList< QSharedPointer<const QMimeData> >::iterator i = m_items.begin(); i != m_items.end(); ++i) {
if (mimeData == *i || text == (*i)->text()) {
- if (mimeData != *i)
- delete *i;
m_items.erase(i);
break;
}
}
- if (m_items.size() > kMaxSize) {
- delete m_items.last();
+ if (m_items.size() >= kMaxSize)
m_items.removeLast();
- }
m_items.prepend(mimeData);
}
-const QMimeData *CircularClipboard::next() const
+QSharedPointer<const QMimeData> CircularClipboard::next() const
{
if (m_items.isEmpty())
- return 0;
+ return QSharedPointer<const QMimeData>();
if (m_current == m_items.length() - 1)
m_current = 0;
@@ -87,3 +87,8 @@ void CircularClipboard::toLastCollect()
{
m_current = -1;
}
+
+int CircularClipboard::size() const
+{
+ return m_items.size();
+}