jump to given line when activating a location list item

This commit is contained in:
Le Tan 2021-04-14 21:13:21 +08:00
parent 0e41597798
commit 5c78eac179
12 changed files with 44 additions and 4 deletions

View File

@ -24,6 +24,7 @@ namespace vnotex
bool m_readOnly = false;
// If m_lineNumber > -1, it indicates the line to scroll to after opening the file.
// 0-based.
int m_lineNumber = -1;
};
}

View File

@ -19,6 +19,7 @@ namespace vnotex
QString m_displayPath;
// 0-based.
int m_lineNumber = -1;
};
@ -42,6 +43,7 @@ namespace vnotex
{
}
// 0-based.
int m_lineNumber = -1;
QString m_text;

View File

@ -87,7 +87,7 @@ void FileSearchEngineWorker::searchFile(const QString &p_filePath, const QString
QSharedPointer<SearchResultItem> resultItem;
int lineNum = 1;
int lineNum = 0;
QTextStream ins(&file);
while (!ins.atEnd()) {
if (isAskedToStop()) {

View File

@ -276,7 +276,7 @@ bool Searcher::searchContent(const File *p_file)
QSharedPointer<SearchResultItem> resultItem;
int lineNum = 1;
int lineNum = 0;
int pos = 0;
int contentSize = content.size();
QRegularExpression newlineRegExp("\\n|\\r\\n|\\r");

View File

@ -138,7 +138,7 @@ void MarkdownViewerAdapter::scrollToLine(int p_lineNumber)
return;
}
m_topLineNumber = -1;
m_topLineNumber = p_lineNumber;
emit editLineNumberUpdated(p_lineNumber);
}

View File

@ -117,7 +117,7 @@ void LocationList::setItemLocationLineAndText(QTreeWidgetItem *p_item, const Com
{
p_item->setData(Columns::LineColumn, Qt::UserRole, p_line.m_lineNumber);
if (p_line.m_lineNumber != -1) {
p_item->setText(Columns::LineColumn, QString::number(p_line.m_lineNumber));
p_item->setText(Columns::LineColumn, QString::number(p_line.m_lineNumber + 1));
}
p_item->setText(Columns::TextColumn, p_line.m_text);
}

View File

@ -918,3 +918,10 @@ bool MarkdownViewWindow::isReadMode() const
{
return m_mode == ViewWindowMode::Read;
}
void MarkdownViewWindow::openTwice(const QSharedPointer<FileOpenParameters> &p_paras)
{
qDebug() << p_paras->m_lineNumber;
Q_ASSERT(!p_paras || !p_paras->m_newFile);
handleFileOpenParameters(p_paras);
}

View File

@ -38,6 +38,8 @@ namespace vnotex
QSharedPointer<OutlineProvider> getOutlineProvider() Q_DECL_OVERRIDE;
void openTwice(const QSharedPointer<FileOpenParameters> &p_paras) Q_DECL_OVERRIDE;
public slots:
void handleEditorConfigChange() Q_DECL_OVERRIDE;

View File

@ -14,6 +14,7 @@
#include <core/vnotex.h>
#include <core/thememgr.h>
#include "editors/statuswidget.h"
#include <core/fileopenparameters.h>
using namespace vnotex;
@ -76,6 +77,8 @@ void TextViewWindow::handleBufferChangedInternal(const QSharedPointer<FileOpenPa
{
Q_UNUSED(p_paras);
TextViewWindowHelper::handleBufferChanged(this);
handleFileOpenParameters(p_paras);
}
void TextViewWindow::syncEditorFromBuffer()
@ -215,3 +218,19 @@ void TextViewWindow::updateEditorFromConfig()
m_editor->zoom(textEditorConfig.getZoomDelta());
}
}
void TextViewWindow::openTwice(const QSharedPointer<FileOpenParameters> &p_paras)
{
handleFileOpenParameters(p_paras);
}
void TextViewWindow::handleFileOpenParameters(const QSharedPointer<FileOpenParameters> &p_paras)
{
if (!p_paras) {
return;
}
if (p_paras->m_lineNumber > -1) {
m_editor->scrollToLine(p_paras->m_lineNumber, true);
}
}

View File

@ -25,6 +25,8 @@ namespace vnotex
void setMode(ViewWindowMode p_mode) Q_DECL_OVERRIDE;
void openTwice(const QSharedPointer<FileOpenParameters> &p_paras) Q_DECL_OVERRIDE;
public slots:
void handleEditorConfigChange() Q_DECL_OVERRIDE;
@ -66,6 +68,8 @@ namespace vnotex
void updateEditorFromConfig();
void handleFileOpenParameters(const QSharedPointer<FileOpenParameters> &p_paras);
static QSharedPointer<vte::TextEditorConfig> createTextEditorConfig(const TextEditorConfig &p_config);
// Managed by QObject.

View File

@ -167,6 +167,8 @@ void ViewArea::openBuffer(Buffer *p_buffer, const QSharedPointer<FileOpenParamet
}
}
selectedWin->openTwice(p_paras);
setCurrentViewWindow(selectedWin);
}

View File

@ -39,6 +39,9 @@ namespace vnotex
void detachFromBuffer(bool p_quiet = false);
// User request to open the buffer attached to this ViewWindow again.
virtual void openTwice(const QSharedPointer<FileOpenParameters> &p_paras) = 0;
virtual const QIcon &getIcon() const;
virtual QString getName() const;