diff --git a/src/terminalDisplay/TerminalDisplay.cpp b/src/terminalDisplay/TerminalDisplay.cpp index 6270d2d5..2f032529 100644 --- a/src/terminalDisplay/TerminalDisplay.cpp +++ b/src/terminalDisplay/TerminalDisplay.cpp @@ -726,7 +726,16 @@ void TerminalDisplay::paintEvent(QPaintEvent *pe) for (const QRect &rect : qAsConst(dirtyImageRegion)) { Q_EMIT drawContents(_image, paint, rect, false, _imageSize, _bidiEnabled, _lineProperties); } - Q_EMIT drawCurrentResultRect(paint, _searchResultRect); + + if (screenWindow()->currentResultLine() != -1) { + _searchResultRect.setRect(0, + contentRect().top() + (screenWindow()->currentResultLine() - screenWindow()->currentLine()) * _terminalFont->fontHeight(), + columns() * terminalFont()->fontWidth(), + _terminalFont->fontHeight() + ); + Q_EMIT drawCurrentResultRect(paint, _searchResultRect); + } + if (_scrollBar->highlightScrolledLines().isEnabled()) { Q_EMIT highlightScrolledLines(paint, _scrollBar->highlightScrolledLines().isTimerActive(), _scrollBar->highlightScrolledLines().rect()); } diff --git a/src/terminalDisplay/TerminalDisplay.h b/src/terminalDisplay/TerminalDisplay.h index 2d4d5f06..bccc6ec0 100644 --- a/src/terminalDisplay/TerminalDisplay.h +++ b/src/terminalDisplay/TerminalDisplay.h @@ -499,7 +499,7 @@ Q_SIGNALS: int imageSize, bool bidiEnabled, QVector lineProperties); - void drawCurrentResultRect(QPainter &painter, QRect searchResultRect); + void drawCurrentResultRect(QPainter &painter, const QRect &searchResultRect); void highlightScrolledLines(QPainter &painter, bool isTimerActive, QRect rect); QRegion highlightScrolledLinesRegion(bool nothingChanged, TerminalScrollBar *scrollBar); diff --git a/src/terminalDisplay/TerminalPainter.cpp b/src/terminalDisplay/TerminalPainter.cpp index 1a54c777..b82aa384 100644 --- a/src/terminalDisplay/TerminalPainter.cpp +++ b/src/terminalDisplay/TerminalPainter.cpp @@ -222,20 +222,8 @@ void TerminalPainter::drawContents(Character *image, } } -void TerminalPainter::drawCurrentResultRect(QPainter &painter, QRect searchResultRect) +void TerminalPainter::drawCurrentResultRect(QPainter &painter, const QRect &searchResultRect) { - const auto display = qobject_cast(sender()); - - if (display->screenWindow()->currentResultLine() == -1) { - return; - } - - searchResultRect.setRect(0, - display->contentRect().top() - + (display->screenWindow()->currentResultLine() - display->screenWindow()->currentLine()) - * display->terminalFont()->fontHeight(), - display->columns() * display->terminalFont()->fontWidth(), - display->terminalFont()->fontHeight()); painter.fillRect(searchResultRect, QColor(0, 0, 255, 80)); } diff --git a/src/terminalDisplay/TerminalPainter.h b/src/terminalDisplay/TerminalPainter.h index 09783cbe..8693eb94 100644 --- a/src/terminalDisplay/TerminalPainter.h +++ b/src/terminalDisplay/TerminalPainter.h @@ -57,7 +57,7 @@ public Q_SLOTS: QVector lineProperties); // draw a transparent rectangle over the line of the current match - void drawCurrentResultRect(QPainter &painter, QRect searchResultRect); + void drawCurrentResultRect(QPainter &painter, const QRect &searchResultRect); // draw a thin highlight on the left of the screen for lines that have been scrolled into view void highlightScrolledLines(QPainter &painter, bool isTimerActive, QRect rect);