Editor: unify adding search results and selections highlights

... to the editor scrollbar.

Change-Id: I18d1946de5b8762b5769565a15a0150fb9ebcd10
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
David Schulz
2025-01-30 14:45:14 +01:00
parent 44b2f994df
commit 8f51c40946

View File

@@ -836,8 +836,13 @@ public:
int start;
int length;
};
void addSearchResultsToScrollBar(const QVector<SearchResult> &results);
void addSelectionHighlightToScrollBar(const QVector<SearchResult> &selections);
void addSearchResultsToScrollBar(
const Id &category,
const QList<SearchResult> &results,
Theme::Color color,
Highlight::Priority prio);
void addSearchResultsToScrollBar(const QList<SearchResult> &results);
void addSelectionHighlightToScrollBar(const QList<SearchResult> &selections);
void adjustScrollBarRanges();
void setFindScope(const MultiTextCursor &scope);
@@ -8211,7 +8216,11 @@ Highlight::Priority textMarkPrioToScrollBarPrio(const TextMark::Priority &prio)
}
}
void TextEditorWidgetPrivate::addSearchResultsToScrollBar(const QVector<SearchResult> &results)
void TextEditorWidgetPrivate::addSearchResultsToScrollBar(
const Id &category,
const QList<SearchResult> &results,
Theme::Color color,
Highlight::Priority prio)
{
if (!m_highlightScrollBarController)
return;
@@ -8223,45 +8232,33 @@ void TextEditorWidgetPrivate::addSearchResultsToScrollBar(const QVector<SearchRe
const int lastLine = block.layout()->lineForTextPosition(result.start - block.position() + result.length).lineNumber();
for (int line = firstLine; line <= lastLine; ++line) {
m_highlightScrollBarController->addHighlight(
{Constants::SCROLL_BAR_SEARCH_RESULT, block.firstLineNumber() + line,
Theme::TextEditor_SearchResult_ScrollBarColor, Highlight::HighPriority});
{category, block.firstLineNumber() + line, color, prio});
}
} else {
m_highlightScrollBarController->addHighlight(
{Constants::SCROLL_BAR_SEARCH_RESULT,
block.blockNumber(),
Theme::TextEditor_SearchResult_ScrollBarColor,
Highlight::HighPriority});
{category, block.blockNumber(), color, prio});
}
}
}
}
void TextEditorWidgetPrivate::addSelectionHighlightToScrollBar(
const QVector<SearchResult> &selections)
void TextEditorWidgetPrivate::addSearchResultsToScrollBar(const QList<SearchResult> &results)
{
if (!m_highlightScrollBarController)
return;
for (const SearchResult &result : selections) {
const QTextBlock &block = q->document()->findBlock(result.start);
if (block.isValid() && block.isVisible()) {
if (q->lineWrapMode() == QPlainTextEdit::WidgetWidth) {
const int firstLine = block.layout()->lineForTextPosition(result.start - block.position()).lineNumber();
const int lastLine = block.layout()->lineForTextPosition(result.start - block.position() + result.length).lineNumber();
for (int line = firstLine; line <= lastLine; ++line) {
m_highlightScrollBarController->addHighlight(
{Constants::SCROLL_BAR_SELECTION, block.firstLineNumber() + line,
Theme::TextEditor_Selection_ScrollBarColor, Highlight::NormalPriority});
addSearchResultsToScrollBar(
Constants::SCROLL_BAR_SEARCH_RESULT,
results,
Theme::TextEditor_SearchResult_ScrollBarColor,
Highlight::HighPriority);
}
} else {
m_highlightScrollBarController->addHighlight(
{Constants::SCROLL_BAR_SELECTION,
block.blockNumber(),
void TextEditorWidgetPrivate::addSelectionHighlightToScrollBar(
const QList<SearchResult> &selections)
{
addSearchResultsToScrollBar(
Constants::SCROLL_BAR_SELECTION,
selections,
Theme::TextEditor_Selection_ScrollBarColor,
Highlight::NormalPriority});
}
}
}
Highlight::NormalPriority);
}
Highlight markToHighlight(TextMark *mark, int lineNumber)