<table><tr><td style="">mglb added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D17744">View Revision</a></tr></table><br /><div><div><blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><ol class="remarkup-list" start="2">
<li class="remarkup-list-item">Font size change (Ctrl+Scroll, Ctrl++, Ctrl+-) during search is not handled</li>
</ol></blockquote>

<p>Not sure what you mean, it seems to work here.</p></blockquote>

<p>Sorry, I've checked again and you are right. Not sure how it did happen before.</p>

<blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><ul class="remarkup-list">
<li class="remarkup-list-item">What do you think about making the lines 1px tall, drawn on inner edge of the rectangle? This would match lines in Breeze widget style.</li>
</ul></blockquote>

<p>Not entirely sure what you mean.</p></blockquote>

<p><a href="https://phabricator.kde.org/F6508690" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;">F6508690: 1px-line.png</a></p>

<p>Code:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">if (drawSearchResults) {
    paint.setPen(QPen(QColor(255, 255, 255, 64), 1));
    paint.drawLine(QLineF(_searchResultRect.topLeft(), _searchResultRect.topRight()).translated(0, 0.5));
    paint.drawLine(QLineF(_searchResultRect.bottomLeft(), _searchResultRect.bottomRight()).translated(0, 0.5));
}</pre></div>



<blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><ul class="remarkup-list">
<li class="remarkup-list-item">Configurable colors, or colors taken from system theme/konsole theme</li>
</ul></blockquote>

<p>Tested this a bit first, but it's hard to make it work with all kinds of different application (<tt style="background: #ebebeb; font-size: 13px;">make menuconfig</tt> is what broke it for me, but mc etc. is also good at breaking this).</p></blockquote>

<p>What about something like this (uses Konsole color scheme)?</p>

<p><a href="https://phabricator.kde.org/F6509810" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;">F6509810: color-from-palette.png</a></p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="diff" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);"><span style="color: #000080">diff --git a/src/TerminalDisplay.cpp b/src/TerminalDisplay.cpp</span>
<span style="color: #000080">index fb4ea1c4..b6bf1a4f 100644</span>
<span style="color: #a00000">--- a/src/TerminalDisplay.cpp</span>
<span style="color: #00a000">+++ b/src/TerminalDisplay.cpp</span>
<span style="color: #800080">@@ -1639,5 +1639,6 @@ void TerminalDisplay::paintEvent(QPaintEvent* pe)</span>


<span style="color: #a00000">-        QColor shadeColor(0, 0, 0, 192);</span>
<span style="color: #00a000">+        QColor shadeColor(_colorTable[DEFAULT_BACK_COLOR]);</span>
<span style="color: #00a000">+        shadeColor.setAlpha(192);</span>

         // Shade area above result
<span style="color: #800080">@@ -1646,5 +1647,5 @@ void TerminalDisplay::paintEvent(QPaintEvent* pe)</span>
         paint.fillRect(0, _searchResultRect.bottom() + 1, contentsRect().width(), contentsRect().height(), shadeColor);
         // Lightly shade line with results
<span style="color: #a00000">-        shadeColor.setAlpha(120);</span>
<span style="color: #00a000">+        shadeColor.setAlpha(128);</span>
         paint.fillRect(_searchResultRect, shadeColor);
     } else {
<span style="color: #800080">@@ -1657,5 +1658,9 @@ void TerminalDisplay::paintEvent(QPaintEvent* pe)</span>
     // from paintFilters because the lines potentially overlap some results
     if (drawSearchResults) {
<span style="color: #a00000">-        paint.setPen(QPen(QColor(255, 255, 255, 64), 2));</span>
<span style="color: #00a000">+        CharacterColor ccFg(COLOR_SPACE_DEFAULT, DEFAULT_FORE_COLOR);</span>
<span style="color: #00a000">+        ccFg.setIntensive();</span>
<span style="color: #00a000">+        QColor fg = ccFg.color(_colorTable);</span>
<span style="color: #00a000">+        fg.setAlpha(96);</span>
<span style="color: #00a000">+        paint.setPen(QPen(fg, 2));</span>
         paint.drawLine(QLine(_searchResultRect.topLeft(), _searchResultRect.topRight()));
         paint.drawLine(QLine(_searchResultRect.bottomLeft(), _searchResultRect.bottomRight()).translated(0, 1));</pre></div>



<h5 class="remarkup-header">bug: first line is selected by default</h5>

<ul class="remarkup-list">
<li class="remarkup-list-item">Start Konsole</li>
<li class="remarkup-list-item">Ctrl+Shift+F</li>
</ul>

<p>Result: first line is highlighted</p>

<p><a href="https://phabricator.kde.org/F6508699" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;">F6508699: Screenshot_2018-12-25-15-49-25.png</a></p>

<h6 class="remarkup-header">bug: shade size does not reach bottom of a window</h6>

<ul class="remarkup-list">
<li class="remarkup-list-item">Start Konsole</li>
<li class="remarkup-list-item">Generate some text to have a few lines in history</li>
<li class="remarkup-list-item">Ctrl+Shift+F</li>
</ul>

<p>Result: bottom dim rectangle is not drawn to the bottom of a window. When you scroll up, you'll see the first line is highlighted and the shade is under it. This also happen when you search for something and scroll down (so the result line is out of screen).</p>

<p><a href="https://phabricator.kde.org/F6508713" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;">F6508713: Screenshot_2018-12-25-15-33-42.png</a></p>

<h6 class="remarkup-header">bug: margins area repaints wrong</h6>

<ul class="remarkup-list">
<li class="remarkup-list-item">set margins to make them visible</li>
<li class="remarkup-list-item">generate some text (to have something in history)</li>
<li class="remarkup-list-item">highlight any line</li>
<li class="remarkup-list-item">scroll a bit</li>
</ul>

<p>Result: highlight on a margin is updated wrong.</p>

<p><a href="https://phabricator.kde.org/F6509820" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;">F6509820: Screenshot_2018-12-26-12-29-08.png</a></p>

<p>Fix (horizontal lines changed to be drawn always on inner side of the rect):</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="diff" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);"><span style="color: #000080">diff --git a/src/TerminalDisplay.cpp b/src/TerminalDisplay.cpp</span>
<span style="color: #000080">index fb4ea1c4..d548a62e 100644</span>
<span style="color: #a00000">--- a/src/TerminalDisplay.cpp</span>
<span style="color: #00a000">+++ b/src/TerminalDisplay.cpp</span>
<span style="color: #800080">@@ -1386,2 +1386,12 @@ void TerminalDisplay::processFilters()</span>

<span style="color: #00a000">+inline QRect TerminalDisplay::calculateSearchResultRect() const</span>
<span style="color: #00a000">+{</span>
<span style="color: #00a000">+    const int searchLine = _screenWindow->currentResultLine() - _screenWindow->currentLine();</span>
<span style="color: #00a000">+    QRect resultRect = imageToWidget(QRect(0, searchLine, _columns, 1))</span>
<span style="color: #00a000">+                       .adjusted(0, -_fontHeight/3, 0, _fontHeight/3);</span>
<span style="color: #00a000">+    resultRect.setLeft(0);</span>
<span style="color: #00a000">+    resultRect.setRight(contentsRect().width());</span>
<span style="color: #00a000">+    return resultRect;</span>
<span style="color: #00a000">+}</span>
<span style="color: #00a000">+</span>
 void TerminalDisplay::updateImage()
<span style="color: #800080">@@ -1559,4 +1569,3 @@ void TerminalDisplay::updateImage()</span>
         // Highlight new result region
<span style="color: #a00000">-        dirtyRegion |= QRect(0, _contentRect.top() + (_screenWindow->currentResultLine() - _screenWindow->currentLine()) * _fontHeight,</span>
<span style="color: #a00000">-                             _columns * _fontWidth, _fontHeight);</span>
<span style="color: #00a000">+        dirtyRegion |= calculateSearchResultRect();</span>
     }
<span style="color: #800080">@@ -1632,9 +1641,3 @@ void TerminalDisplay::paintEvent(QPaintEvent* pe)</span>
     if (drawSearchResults) {
<span style="color: #a00000">-        const int searchLine = _screenWindow->currentResultLine() - _screenWindow->currentLine();</span>
<span style="color: #a00000">-        _searchResultRect = imageToWidget(QRect(0, searchLine, _columns, 1));</span>
<span style="color: #a00000">-        _searchResultRect.setTop(_searchResultRect.top() - _fontHeight / 3);</span>
<span style="color: #a00000">-        _searchResultRect.setBottom(_searchResultRect.bottom() + _fontHeight / 3);</span>
<span style="color: #a00000">-        _searchResultRect.setLeft(0);</span>
<span style="color: #a00000">-        _searchResultRect.setRight(contentsRect().width());</span>
<span style="color: #a00000">-</span>
<span style="color: #00a000">+        _searchResultRect = calculateSearchResultRect();</span>

<span style="color: #800080">@@ -1659,4 +1662,5 @@ void TerminalDisplay::paintEvent(QPaintEvent* pe)</span>
         paint.setPen(QPen(QColor(255, 255, 255, 64), 2));
<span style="color: #a00000">-        paint.drawLine(QLine(_searchResultRect.topLeft(), _searchResultRect.topRight()));</span>
<span style="color: #a00000">-        paint.drawLine(QLine(_searchResultRect.bottomLeft(), _searchResultRect.bottomRight()).translated(0, 1));</span>
<span style="color: #00a000">+        const qreal lineOffset = paint.pen().width()/2.;</span>
<span style="color: #00a000">+        paint.drawLine(QLineF(_searchResultRect.topLeft(), _searchResultRect.topRight()).translated(0, lineOffset));</span>
<span style="color: #00a000">+        paint.drawLine(QLineF(_searchResultRect.bottomLeft(), _searchResultRect.bottomRight()).translated(0, 1 - lineOffset));</span>
     }
<span style="color: #000080">diff --git a/src/TerminalDisplay.h b/src/TerminalDisplay.h</span>
<span style="color: #000080">index 1b7dccc1..f22b8125 100644</span>
<span style="color: #a00000">--- a/src/TerminalDisplay.h</span>
<span style="color: #00a000">+++ b/src/TerminalDisplay.h</span>
<span style="color: #800080">@@ -921,2 +921,4 @@ private:</span>

<span style="color: #00a000">+    QRect calculateSearchResultRect() const;</span>
<span style="color: #00a000">+</span>
     // the window onto the terminal screen which this display</pre></div>



<h6 class="remarkup-header">bug: highlight stays in same place when the screen content changes</h6>

<ul class="remarkup-list">
<li class="remarkup-list-item">start konsole</li>
<li class="remarkup-list-item">run <tt style="background: #ebebeb; font-size: 13px;">mc</tt></li>
<li class="remarkup-list-item">search for something; for best results highlight something between center and bottom of the window</li>
<li class="remarkup-list-item">click terminal to focus it</li>
<li class="remarkup-list-item">exit (f10)</li>
</ul>

<p>Result: the highlight rectangle is still where it was.</p>

<p><a href="https://phabricator.kde.org/F6509816" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;">F6509816: Screenshot_2018-12-26-15-29-26.png</a></p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R319 Konsole</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D17744">https://phabricator.kde.org/D17744</a></div></div><br /><div><strong>To: </strong>sandsmark, hindenburg, Konsole, thsurrel, tcanabrava, VDG<br /><strong>Cc: </strong>ngraham, mglb, konsole-devel, Konsole, thsurrel, maximilianocuria, hindenburg<br /></div>