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