[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kate] addons/search: S&R: Add wrap around top/bottom messages (like the built in one)
From: Kåre Särs <kare.sars () iki ! fi>
Date: 2016-06-17 10:44:37
Message-ID: E1bDrGP-0000Ic-4t () scm ! kde ! org
[Download RAW message or body]
Git commit 10a6c00d1889349c120b73813c2402ff596cec2f by Kåre Särs.
Committed on 17/06/2016 at 09:25.
Pushed by sars into branch 'master'.
S&R: Add wrap around top/bottom messages (like the built in one)
M +26 -0 addons/search/plugin_search.cpp
M +2 -0 addons/search/plugin_search.h
http://commits.kde.org/kate/10a6c00d1889349c120b73813c2402ff596cec2f
diff --git a/addons/search/plugin_search.cpp b/addons/search/plugin_search.cpp
index 5d1772d..ff15cc5 100644
--- a/addons/search/plugin_search.cpp
+++ b/addons/search/plugin_search.cpp
@@ -1465,6 +1465,7 @@ void KatePluginSearchView::itemSelected(QTreeWidgetItem *item)
void KatePluginSearchView::goToNextMatch()
{
+ bool fromFirst = false;
Results *res = qobject_cast<Results *>(m_ui.resultTabWidget->currentWidget());
if (!res) {
return;
@@ -1478,15 +1479,28 @@ void KatePluginSearchView::goToNextMatch()
if (!curr->data(0, ReplaceMatches::ColumnRole).toString().isEmpty()) {
curr = res->tree->itemBelow(curr);
if (!curr) {
+ fromFirst = true;
curr = res->tree->topLevelItem(0);
}
}
itemSelected(curr);
+
+ if (fromFirst) {
+ delete m_infoMessage;
+ const QString msg = i18n("Continuing from first match");
+ m_infoMessage = new KTextEditor::Message(msg, KTextEditor::Message::Information);
+ m_infoMessage->setPosition(KTextEditor::Message::TopInView);
+ m_infoMessage->setAutoHide(2000);
+ m_infoMessage->setAutoHideMode(KTextEditor::Message::Immediate);
+ m_infoMessage->setView(m_mainWindow->activeView());
+ m_mainWindow->activeView()->document()->postMessage(m_infoMessage);
+ }
}
void KatePluginSearchView::goToPreviousMatch()
{
+ bool fromLast = false;
Results *res = qobject_cast<Results *>(m_ui.resultTabWidget->currentWidget());
if (!res) {
return;
@@ -1515,9 +1529,21 @@ void KatePluginSearchView::goToPreviousMatch()
// select the last match of the "root item"
if (!root || (root->childCount() < 1)) return;
curr = root->child(root->childCount()-1);
+
+ fromLast = true;
}
itemSelected(curr);
+ if (fromLast) {
+ delete m_infoMessage;
+ const QString msg = i18n("Continuing from last match");
+ m_infoMessage = new KTextEditor::Message(msg, KTextEditor::Message::Information);
+ m_infoMessage->setPosition(KTextEditor::Message::BottomInView);
+ m_infoMessage->setAutoHide(2000);
+ m_infoMessage->setAutoHideMode(KTextEditor::Message::Immediate);
+ m_infoMessage->setView(m_mainWindow->activeView());
+ m_mainWindow->activeView()->document()->postMessage(m_infoMessage);
+ }
}
void KatePluginSearchView::readSessionConfig(const KConfigGroup &cg)
diff --git a/addons/search/plugin_search.h b/addons/search/plugin_search.h
index 55cc079..f8f2305 100644
--- a/addons/search/plugin_search.h
+++ b/addons/search/plugin_search.h
@@ -26,6 +26,7 @@
#include <ktexteditor/application.h>
#include <KTextEditor/Command>
#include <ktexteditor/sessionconfiginterface.h>
+#include <KTextEditor/Message>
#include <QAction>
#include <QTreeWidget>
@@ -191,6 +192,7 @@ private:
QString m_resultBaseDir;
QList<KTextEditor::MovingRange*> m_matchRanges;
QTimer m_changeTimer;
+ QPointer<KTextEditor::Message> m_infoMessage;
/**
* current project plugin view, if any
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic