Skip to content
Commit 473941dc authored by Mariusz Glebocki's avatar Mariusz Glebocki Committed by Kurt Hindenburg
Browse files

Fix double render when scrolling with visible search bar

Summary:
When the search bar is visible and user scrolls terminal contents,
(part of) one line is rendered twice. The effect is visible on
semi-transparent pixels (i.e. antialiasing) with some font sizes.

With this patch, the characters which should be painted are calculated
once. It was done for every rect in a paint region separately before.
When two rectangles included different parts of a line, it was drawn
twice. Only part of the line had visual effect visible, as each
rectangle was cleared before rendering.

{F6310966}

Test Plan:
* set font to DejaVu Sans Mono 7pt (tested with 96dpi). Other
  fonts/sizes can work too, just make sure the bottom edge of the search
  box is not exactly between lines
* run `printf '%3d▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒\n' $(seq 500)`
* open search box
* scroll up/down using mouse wheel

Actual result: One line is brighter (painted twice)
Expected result: All boxes should look the same

* run in a bash/zsh:
```
reset
printf '.%.0s' $(seq $(( LINES * COLUMNS )))
printf '\033[?7l'
printf '\033[%d;%dH%c' 1 1 A 1 $COLUMNS B $LINES 1 C $LINES $COLUMNS D
read
reset
```
* from "File" menu select "Print Screen..."
* print to PDF file (or real printer if you want)

Expected result: printed document must contain whole terminal screen
(A, B, C, D in top left, top right, bottom left, bottom right corner,
respectively, and dots filling the screen)

Reviewers: #konsole, hindenburg

Reviewed By: #konsole, hindenburg

Subscribers: hindenburg, konsole-devel

Tags: #konsole

Differential Revision: https://phabricator.kde.org/D16033
parent d351bdfc
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment