diff options
author | Francois Ferrand <thetypz@gmail.com> | 2012-03-12 17:38:54 +0100 |
---|---|---|
committer | Leandro Melo <leandro.melo@nokia.com> | 2012-06-05 12:08:00 +0200 |
commit | 6defb83d0362be6b8910b81733c7f4d7895c6b2d (patch) | |
tree | 206f307707fae72a76f97f0ca11e8de47a68ab19 /src/plugins/texteditor/circularclipboard.cpp | |
parent | 80180ba714e3945c6e23f2c1eec38c4f2fea3ee9 (diff) | |
download | qt-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.cpp | 23 |
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(); +} |