From 40254b068b9389c30608184e33ffce42ee3fc74c Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Mon, 18 Mar 2019 18:53:28 +0000 Subject: user/konsole: fix cursor rendering bug --- user/konsole/APKBUILD | 7 ++-- user/konsole/cursor.patch | 87 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 user/konsole/cursor.patch (limited to 'user/konsole') diff --git a/user/konsole/APKBUILD b/user/konsole/APKBUILD index 827af3d24..551c18148 100644 --- a/user/konsole/APKBUILD +++ b/user/konsole/APKBUILD @@ -16,7 +16,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kbookmarks-dev kpty-dev kservice-dev ktextwidgets-dev kwidgetsaddons-dev python3 kwindowsystem-dev kxmlgui-dev kdbusaddons-dev knewstuff-dev" subpackages="$pkgname-doc $pkgname-lang" -source="https://download.kde.org/stable/applications/$pkgver/src/konsole-$pkgver.tar.xz" +source="https://download.kde.org/stable/applications/$pkgver/src/konsole-$pkgver.tar.xz + cursor.patch + " build() { cd "$builddir" @@ -44,4 +46,5 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="9fecd316a9bc7adaca9a3fac38a57d293286b6328e88d96ac1cf8967fcb67ef8e9a5b085e185c4373599eafd0eaa18f0d73df70df16b98a1badd9efb689e1f7c konsole-18.12.3.tar.xz" +sha512sums="9fecd316a9bc7adaca9a3fac38a57d293286b6328e88d96ac1cf8967fcb67ef8e9a5b085e185c4373599eafd0eaa18f0d73df70df16b98a1badd9efb689e1f7c konsole-18.12.3.tar.xz +66dcb31dd63f7a300b64058e8f9e56aa122c407d3a4a85c2323e7abf2e8eb4a3e1dd83de9445dac4938f9395b612eac5ceb9626bf895b532cfd19f63e0fbb2d7 cursor.patch" 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 +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 + -- cgit v1.2.3-70-g09d2