From 50755f0d37e7bd64c1939424e129058f86aa0605 Mon Sep 17 00:00:00 2001 From: Eric Hameleers Date: Thu, 9 May 2019 16:07:11 +0200 Subject: Konsole: fix rendering of cursor if non-default theme is selected This issue was fixed post 18.12.3, so the patch is added but not applied since we now compile konsole-19.04.1. --- kde/patch/konsole.patch | 4 ++ kde/patch/konsole/konsole.cursor.antialias.patch | 83 ++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 kde/patch/konsole/konsole.cursor.antialias.patch diff --git a/kde/patch/konsole.patch b/kde/patch/konsole.patch index ce82120..36e64e6 100644 --- a/kde/patch/konsole.patch +++ b/kde/patch/konsole.patch @@ -3,3 +3,7 @@ # Reverted to default behaviour in 18.04.0 after Slackware did the same: #cat $CWD/patch/konsole/konsole.term.is.konsole.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +# Fix rendering of cursor if non-default theme is selected +# (fixed post 18.12.3): +#cat $CWD/patch/konsole/konsole.cursor.antialias.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } + diff --git a/kde/patch/konsole/konsole.cursor.antialias.patch b/kde/patch/konsole/konsole.cursor.antialias.patch new file mode 100644 index 0000000..596ccaa --- /dev/null +++ b/kde/patch/konsole/konsole.cursor.antialias.patch @@ -0,0 +1,83 @@ +From eccfb1f62bbf67ebffee11e241bd05757b826ff1 Mon Sep 17 00:00:00 2001 +From: Wolfgang Bauer +Date: Mon, 4 Mar 2019 09:59:45 -0500 +Subject: [PATCH] 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 +--- + src/TerminalDisplay.cpp | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +diff --git a/src/TerminalDisplay.cpp b/src/TerminalDisplay.cpp +index 543b8970..397422c4 100644 +--- a/src/TerminalDisplay.cpp ++++ b/src/TerminalDisplay.cpp +@@ -716,16 +716,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.2.3