diff options
Diffstat (limited to 'kde-apps')
-rw-r--r-- | kde-apps/konsole/files/konsole-18.12.0-fix-drawing-box-chars.patch | 188 | ||||
-rw-r--r-- | kde-apps/konsole/konsole-18.12.0-r1.ebuild | 59 |
2 files changed, 247 insertions, 0 deletions
diff --git a/kde-apps/konsole/files/konsole-18.12.0-fix-drawing-box-chars.patch b/kde-apps/konsole/files/konsole-18.12.0-fix-drawing-box-chars.patch new file mode 100644 index 000000000000..1847543737af --- /dev/null +++ b/kde-apps/konsole/files/konsole-18.12.0-fix-drawing-box-chars.patch @@ -0,0 +1,188 @@ +From 807ac77061604c2ac7cf84b0a0b29dd949a6c634 Mon Sep 17 00:00:00 2001 +From: "Martin T. H. Sandsmark" <martin.sandsmark@kde.org> +Date: Thu, 6 Dec 2018 10:02:41 -0500 +Subject: fix drawing box chars, avoid storing and saving state all the time + +Summary: +to get the box chars to be drawn correctly we need to turn on high +quality antialiasing in qpainter. in addition only turn it on if +antialiasing is enabled. + +lastly qpainter.save()/restore() is called very often, so try to avoid +that if it isn't necessary. + +BUG: 401463 + +Test Plan: +`cat tests/boxes.txt` + +old: + +{F6428268} + +new: + +{F6450304} + +Reviewers: #konsole, hindenburg + +Reviewed By: #konsole, hindenburg + +Subscribers: wbauer, konsole-devel, #konsole + +Tags: #konsole + +Differential Revision: https://phabricator.kde.org/D16947 + +(cherry picked from commit 14b3c8be2c15ed9711b1308b4a991de4aad5802d) +--- + src/TerminalDisplay.cpp | 45 ++++++++++++++++++++------------------------- + 1 file changed, 20 insertions(+), 25 deletions(-) + +diff --git a/src/TerminalDisplay.cpp b/src/TerminalDisplay.cpp +index 722e200..2b14556 100644 +--- a/src/TerminalDisplay.cpp ++++ b/src/TerminalDisplay.cpp +@@ -619,7 +619,7 @@ static void drawLineChar(QPainter& paint, int x, int y, int w, int h, uchar code + { + //Calculate cell midpoints, end points. + const int cx = x + w / 2; +- const int cy = y + h / 2; ++ const int cy = y + h / 2. - 0.5; + const int ex = x + w - 1; + const int ey = y + h - 1; + +@@ -671,33 +671,33 @@ static void drawLineChar(QPainter& paint, int x, int y, int w, int h, uchar code + + //Intersection points. + if ((toDraw & Int11) != 0u) { +- paint.drawPoint(cx - 1, cy - 1); ++ paint.drawPoint(cx - 2, cy - 2); + } + if ((toDraw & Int12) != 0u) { +- paint.drawPoint(cx, cy - 1); ++ paint.drawPoint(cx - 1, cy - 2); + } + if ((toDraw & Int13) != 0u) { +- paint.drawPoint(cx + 1, cy - 1); ++ paint.drawPoint(cx - 0, cy - 2); + } + + if ((toDraw & Int21) != 0u) { +- paint.drawPoint(cx - 1, cy); ++ paint.drawPoint(cx - 2, cy - 1); + } + if ((toDraw & Int22) != 0u) { +- paint.drawPoint(cx, cy); ++ paint.drawPoint(cx - 1, cy - 1); + } + if ((toDraw & Int23) != 0u) { +- paint.drawPoint(cx + 1, cy); ++ paint.drawPoint(cx - 0, cy - 1); + } + + if ((toDraw & Int31) != 0u) { +- paint.drawPoint(cx - 1, cy + 1); ++ paint.drawPoint(cx - 2, cy); + } + if ((toDraw & Int32) != 0u) { +- paint.drawPoint(cx, cy + 1); ++ paint.drawPoint(cx - 1, cy); + } + if ((toDraw & Int33) != 0u) { +- paint.drawPoint(cx + 1, cy + 1); ++ paint.drawPoint(cx - 0, cy); + } + } + +@@ -705,7 +705,7 @@ static void drawOtherChar(QPainter& paint, int x, int y, int w, int h, uchar cod + { + //Calculate cell midpoints, end points. + const int cx = x + w / 2; +- const int cy = y + h / 2; ++ const int cy = y + h / 2. - 0.5; // Compensate for the translation, to match fonts + const int ex = x + w - 1; + const int ey = y + h - 1; + +@@ -792,16 +792,17 @@ void TerminalDisplay::drawLineCharString(QPainter& painter, int x, int y, const + const Character* attributes) + { + painter.save(); +- painter.setRenderHint(QPainter::Antialiasing); + +- const QPen& originalPen = painter.pen(); ++ // For antialiasing, we need to shift it so the single pixel width is in the middle ++ painter.translate(0.5, 0.5); + + if (((attributes->rendition & RE_BOLD) != 0) && _boldIntense) { +- QPen boldPen(originalPen); +- boldPen.setWidth(3); ++ QPen boldPen(painter.pen()); ++ boldPen.setWidth(4); + painter.setPen(boldPen); + } + ++ + for (int i = 0 ; i < str.length(); i++) { + const uchar code = str[i].cell(); + if (LineChars[code] != 0u) { +@@ -909,10 +910,10 @@ void TerminalDisplay::drawBackground(QPainter& painter, const QRect& rect, const + QColor color(backgroundColor); + color.setAlpha(qAlpha(_blendColor)); + +- painter.save(); ++ const QPainter::CompositionMode originalMode = painter.compositionMode(); + painter.setCompositionMode(QPainter::CompositionMode_Source); + painter.fillRect(rect, color); +- painter.restore(); ++ painter.setCompositionMode(originalMode); + #endif + } else { + painter.fillRect(rect, backgroundColor); +@@ -1041,8 +1042,6 @@ void TerminalDisplay::drawTextFragment(QPainter& painter , + const QString& text, + const Character* style) + { +- painter.save(); +- + // setup painter + const QColor foregroundColor = style->foregroundColor.color(_colorTable); + const QColor backgroundColor = style->backgroundColor.color(_colorTable); +@@ -1062,8 +1061,6 @@ void TerminalDisplay::drawTextFragment(QPainter& painter , + + // draw text + drawCharacters(painter, rect, text, style, invertCharacterColor); +- +- painter.restore(); + } + + void TerminalDisplay::drawPrinterFriendlyTextFragment(QPainter& painter, +@@ -1071,8 +1068,6 @@ void TerminalDisplay::drawPrinterFriendlyTextFragment(QPainter& painter, + const QString& text, + const Character* style) + { +- painter.save(); +- + // Set the colors used to draw to black foreground and white + // background for printer friendly output when printing + Character print_style = *style; +@@ -1081,8 +1076,6 @@ void TerminalDisplay::drawPrinterFriendlyTextFragment(QPainter& painter, + + // draw text + drawCharacters(painter, rect, text, &print_style, false); +- +- painter.restore(); + } + + void TerminalDisplay::setRandomSeed(uint randomSeed) +@@ -1499,6 +1492,8 @@ void TerminalDisplay::paintEvent(QPaintEvent* pe) + drawBackground(paint, rect, getBackgroundColor(), true /* use opacity setting */); + } + ++ paint.setRenderHint(QPainter::Antialiasing, _antialiasText); ++ + foreach(const QRect & rect, dirtyImageRegion.rects()) { + drawContents(paint, rect); + } +-- +cgit v1.1 diff --git a/kde-apps/konsole/konsole-18.12.0-r1.ebuild b/kde-apps/konsole/konsole-18.12.0-r1.ebuild new file mode 100644 index 000000000000..63fec0b9fa7e --- /dev/null +++ b/kde-apps/konsole/konsole-18.12.0-r1.ebuild @@ -0,0 +1,59 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +KDE_HANDBOOK="optional" +KDE_TEST="true" +VIRTUALX_REQUIRED="test" +inherit kde5 + +DESCRIPTION="KDE's terminal emulator" +HOMEPAGE="https://www.kde.org/applications/system/konsole https://konsole.kde.org" + +KEYWORDS="~amd64 ~x86" +IUSE="X" + +DEPEND=" + $(add_frameworks_dep kbookmarks) + $(add_frameworks_dep kcompletion) + $(add_frameworks_dep kconfig) + $(add_frameworks_dep kconfigwidgets) + $(add_frameworks_dep kcoreaddons) + $(add_frameworks_dep kcrash) + $(add_frameworks_dep kdbusaddons) + $(add_frameworks_dep kguiaddons) + $(add_frameworks_dep kjobwidgets) + $(add_frameworks_dep ki18n) + $(add_frameworks_dep kinit) + $(add_frameworks_dep kiconthemes) + $(add_frameworks_dep kio) + $(add_frameworks_dep knewstuff) + $(add_frameworks_dep knotifications) + $(add_frameworks_dep knotifyconfig) + $(add_frameworks_dep kparts) + $(add_frameworks_dep kpty) + $(add_frameworks_dep kservice) + $(add_frameworks_dep ktextwidgets) + $(add_frameworks_dep kwidgetsaddons) + $(add_frameworks_dep kwindowsystem) + $(add_frameworks_dep kxmlgui) + $(add_qt_dep qtdbus) + $(add_qt_dep qtgui) + $(add_qt_dep qtnetwork) + $(add_qt_dep qtprintsupport) + $(add_qt_dep qtwidgets) + $(add_qt_dep qtxml) + X? ( x11-libs/libX11 ) +" +RDEPEND="${DEPEND}" + +PATCHES=( "${FILESDIR}/${P}-fix-drawing-box-chars.patch" ) # fixed in 18.12.1 + +src_configure() { + local mycmakeargs=( + $(cmake-utils_use_find_package X X11) + ) + + kde5_src_configure +} |