[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kde-workspace] klipper: Fix and improve shortcuts "next history
From: Esben Mose Hansen <kde () mosehansen ! dk>
Date: 2011-10-16 7:55:40
Message-ID: 20111016075540.EC0AAA60A6 () git ! kde ! org
[Download RAW message or body]
Git commit 4f3f5e0dff82289fce704999c647ee1ad2c219b7 by Esben Mose Hansen.
Committed on 16/10/2011 at 09:43.
Pushed by esben into branch 'master'.
Fix and improve shortcuts "next history item" and "previous history item" in klipper, \
provided by Michal Seben
REVIEW: 102672
(cherry picked from commit a6b69cb3781b4e3d6b39c8f391e08695a9cb9b75)
M +39 -17 klipper/history.cpp
M +10 -4 klipper/klipper.cpp
http://commits.kde.org/kde-workspace/4f3f5e0dff82289fce704999c647ee1ad2c219b7
diff --git a/klipper/history.cpp b/klipper/history.cpp
index 48e81a1..5964c22 100644
--- a/klipper/history.cpp
+++ b/klipper/history.cpp
@@ -157,17 +157,28 @@ void History::cycleNext() {
if (m_top && m_nextCycle && m_nextCycle != m_top) {
HistoryItem* prev = m_items[m_nextCycle->previous_uuid()];
HistoryItem* next = m_items[m_nextCycle->next_uuid()];
- HistoryItem* endofhist = m_items[m_top->previous_uuid()];
- HistoryItem* aftertop = m_items[m_top->next_uuid()];
- if (prev == m_top) {
- prev = m_nextCycle;
- aftertop = m_top;
+ //if we have only two items in clipboard
+ if (prev == next) {
+ m_top=m_nextCycle;
+ }
+ else {
+ HistoryItem* endofhist = m_items[m_top->previous_uuid()];
+ HistoryItem* aftertop = m_items[m_top->next_uuid()];
+ if (prev == m_top) {
+ prev = m_nextCycle;
+ aftertop = m_top;
+ }
+ else if (next == m_top) {
+ next = m_nextCycle;
+ endofhist = m_top;
+ }
+ m_top->insertBetweeen(prev, next);
+ m_nextCycle->insertBetweeen(endofhist, aftertop);
+ m_top = m_nextCycle;
+ m_nextCycle = next;
}
- m_top->insertBetweeen(prev, next);
- m_nextCycle->insertBetweeen(endofhist, aftertop);
- m_top = m_nextCycle;
- m_nextCycle = next;
emit changed();
+ emit topChanged();
}
}
@@ -178,17 +189,28 @@ void History::cyclePrev() {
return;
}
HistoryItem* prevprev = m_items[prev->previous_uuid()];
- HistoryItem* endofhist = m_items[m_top->previous_uuid()];
HistoryItem* aftertop = m_items[m_top->next_uuid()];
- if (prevprev == m_top) {
- prevprev = prev;
- aftertop = m_top;
+ //if we have only two items in clipboard
+ if (m_nextCycle == prevprev) {
+ m_top=aftertop;
+ }
+ else {
+ HistoryItem* endofhist = m_items[m_top->previous_uuid()];
+ if (prevprev == m_top) {
+ prevprev = prev;
+ aftertop = m_top;
+ }
+ else if (m_nextCycle == m_top) {
+ m_nextCycle = aftertop;
+ endofhist = m_top;
+ }
+ m_top->insertBetweeen(prevprev,m_nextCycle);
+ prev->insertBetweeen(endofhist, aftertop);
+ m_nextCycle = m_top;
+ m_top = prev;
}
- m_top->insertBetweeen(prevprev,m_nextCycle);
- prev->insertBetweeen(endofhist, aftertop);
- m_nextCycle = m_top;
- m_top = prev;
emit changed();
+ emit topChanged();
}
}
diff --git a/klipper/klipper.cpp b/klipper/klipper.cpp
index 006a7f0..a588462 100644
--- a/klipper/klipper.cpp
+++ b/klipper/klipper.cpp
@@ -1158,14 +1158,20 @@ void Klipper::slotAskClearHistory()
void Klipper::slotCycleNext()
{
- m_history->cycleNext();
- emit passivePopup(i18n("Clipboard history"), cycleText());
+ //do cycle and show popup only if we have something in clipboard
+ if (m_history->first()) {
+ m_history->cycleNext();
+ emit passivePopup(i18n("Clipboard history"), cycleText());
+ }
}
void Klipper::slotCyclePrev()
{
- m_history->cyclePrev();
- emit passivePopup(i18n("Clipboard history"), cycleText());
+ //do cycle and show popup only if we have something in clipboard
+ if (m_history->first()) {
+ m_history->cyclePrev();
+ emit passivePopup(i18n("Clipboard history"), cycleText());
+ }
}
QString Klipper::cycleText() const
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic