diff options
Diffstat (limited to 'user/konsole/cursor.patch')
-rw-r--r-- | user/konsole/cursor.patch | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/user/konsole/cursor.patch b/user/konsole/cursor.patch new file mode 100644 index 000000000..621a4f36b --- /dev/null +++ b/user/konsole/cursor.patch @@ -0,0 +1,87 @@ +From 9af659c73e3203e1d5ef3873fa6c0144258b9673 Mon Sep 17 00:00:00 2001 +From: Wolfgang Bauer <wbauer@tmo.at> +Date: Mon, 4 Mar 2019 09:59:45 -0500 +Subject: Fix ibeam and underline cursor rendering + +Summary: +Since anti-aliasing was enabled in the painter, coordinates need to +be shifted half a pixel so that they align with the pixel grid, +otherwise the result gets "blurred" due to the anti-aliasing. +And as parts of the blurred shape leak outside the cursor rectangle, +this also leaves artifacts when the cursor moves or blinks as these +parts are not cleared. + +This is basically the same as commit +e7085310d6d594823d0ed491fa8bdbd99dec4932 for the +standard block cursor. + +BUG: 402589 + +Test Plan: +- Switch cursor shape to "I-Beam" or "Underline" in the "Advanced" +profile settings + +The cursors are a single line again now, before they were blurred by +anti-aliasing. + +Screenshots: +Before: +{F6656366} +{F6656370} + +After: +{F6656371} +{F6656373} + +Also, there are no more artifacts when the cursor is moved or +cursor blinking is enabled. + +Reviewers: #konsole, hindenburg + +Reviewed By: #konsole, hindenburg + +Subscribers: hindenburg, konsole-devel + +Tags: #konsole + +Differential Revision: https://phabricator.kde.org/D19513 + +(cherry picked from commit eccfb1f62bbf67ebffee11e241bd05757b826ff1) +--- + src/TerminalDisplay.cpp | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +diff --git a/src/TerminalDisplay.cpp b/src/TerminalDisplay.cpp +index 64c831c..7c8137d 100644 +--- a/src/TerminalDisplay.cpp ++++ b/src/TerminalDisplay.cpp +@@ -958,16 +958,18 @@ void TerminalDisplay::drawCursor(QPainter& painter, + } + } + } else if (_cursorShape == Enum::UnderlineCursor) { +- painter.drawLine(cursorRect.left(), +- cursorRect.bottom(), +- cursorRect.right(), +- cursorRect.bottom()); ++ QLineF line(cursorRect.left() + 0.5, ++ cursorRect.bottom() - 0.5, ++ cursorRect.right() - 0.5, ++ cursorRect.bottom() - 0.5); ++ painter.drawLine(line); + + } else if (_cursorShape == Enum::IBeamCursor) { +- painter.drawLine(cursorRect.left(), +- cursorRect.top(), +- cursorRect.left(), +- cursorRect.bottom()); ++ QLineF line(cursorRect.left() + 0.5, ++ cursorRect.top() + 0.5, ++ cursorRect.left() + 0.5, ++ cursorRect.bottom() - 0.5); ++ painter.drawLine(line); + } + } + +-- +cgit v1.1 + |