diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2020-06-30 23:42:13 +0200 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2020-06-30 23:44:04 +0200 |
commit | 3490a8cb8b1f58dadaf25feedd2cf108ec1a9dd0 (patch) | |
tree | 971deb095cbce15808f62642967dc0dff7ccdbcb /kde-misc | |
parent | media-gfx/digikam: Fix 6.4.0-r1 build w/ Qt-5.15 (diff) | |
download | gentoo-3490a8cb8b1f58dadaf25feedd2cf108ec1a9dd0.tar.gz gentoo-3490a8cb8b1f58dadaf25feedd2cf108ec1a9dd0.tar.bz2 gentoo-3490a8cb8b1f58dadaf25feedd2cf108ec1a9dd0.zip |
kde-misc/kdiff3: Fix HiDPI support
Closes: https://bugs.gentoo.org/723436
Package-Manager: Portage-2.3.103, Repoman-2.3.23
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'kde-misc')
-rw-r--r-- | kde-misc/kdiff3/files/kdiff3-1.8.3-hidpi.patch | 112 | ||||
-rw-r--r-- | kde-misc/kdiff3/kdiff3-1.8.3-r1.ebuild | 41 |
2 files changed, 153 insertions, 0 deletions
diff --git a/kde-misc/kdiff3/files/kdiff3-1.8.3-hidpi.patch b/kde-misc/kdiff3/files/kdiff3-1.8.3-hidpi.patch new file mode 100644 index 000000000000..180009afe0e7 --- /dev/null +++ b/kde-misc/kdiff3/files/kdiff3-1.8.3-hidpi.patch @@ -0,0 +1,112 @@ +From 5dcc0673c61cc75122bf5f812a45bbb15b778218 Mon Sep 17 00:00:00 2001 +From: Alexander Volkov <avolkov@astralinux.ru> +Date: Mon, 27 Apr 2020 15:52:18 +0300 +Subject: [PATCH] Add HiDPI support + +* Backported to 1.8 branch +--- + src/Overview.cpp | 6 ++++-- + src/directorymergewindow.cpp | 15 +++++++++------ + src/main.cpp | 1 + + src/mergeresultwindow.cpp | 7 +++++-- + 4 files changed, 19 insertions(+), 10 deletions(-) + +diff --git a/src/Overview.cpp b/src/Overview.cpp +index ee1d73f..ac35e7e 100644 +--- a/src/Overview.cpp ++++ b/src/Overview.cpp +@@ -271,7 +271,8 @@ void Overview::paintEvent(QPaintEvent*) + int h = height() - 1; + int w = width(); + +- if(m_pixmap.size() != size()) ++ const auto dpr = devicePixelRatioF(); ++ if(m_pixmap.size() != size() * dpr) + { + if(m_pOptions->m_bWordWrap) + { +@@ -287,7 +288,8 @@ void Overview::paintEvent(QPaintEvent*) + m_nofLines = m_pDiff3LineList->size(); + } + +- m_pixmap = QPixmap(size()); ++ m_pixmap = QPixmap(size() * dpr); ++ m_pixmap.setDevicePixelRatio(dpr); + + QPainter p(&m_pixmap); + p.fillRect(rect(), m_pOptions->m_bgColor); +diff --git a/src/directorymergewindow.cpp b/src/directorymergewindow.cpp +index 31dbcaf..1cc62b4 100644 +--- a/src/directorymergewindow.cpp ++++ b/src/directorymergewindow.cpp +@@ -584,7 +584,10 @@ class DirectoryMergeWindow::DirMergeItemDelegate : public QStyledItemDelegate + //QPixmap icon = value.value<QPixmap>(); //pixmap(column); + if(!icon.isNull()) + { +- int yOffset = (sizeHint(option, index).height() - icon.height()) / 2; ++ const auto dpr = thePainter->device()->devicePixelRatioF(); ++ const int w = qRound(icon.width() / dpr); ++ const int h = qRound(icon.height() / dpr); ++ int yOffset = (sizeHint(option, index).height() - h) / 2; + thePainter->drawPixmap(x + 2, y + yOffset, icon); + + int i = index == d->m_selection1Index ? 1 : index == d->m_selection2Index ? 2 : index == d->m_selection3Index ? 3 : 0; +@@ -593,20 +596,20 @@ class DirectoryMergeWindow::DirMergeItemDelegate : public QStyledItemDelegate + Options* pOpts = d->m_pOptions; + QColor c(i == 1 ? pOpts->m_colorA : i == 2 ? pOpts->m_colorB : pOpts->m_colorC); + thePainter->setPen(c); // highlight() ); +- thePainter->drawRect(x + 2, y + yOffset, icon.width(), icon.height()); ++ thePainter->drawRect(x + 2, y + yOffset, w, h); + thePainter->setPen(QPen(c, 0, Qt::DotLine)); +- thePainter->drawRect(x + 1, y + yOffset - 1, icon.width() + 2, icon.height() + 2); ++ thePainter->drawRect(x + 1, y + yOffset - 1, w + 2, h + 2); + thePainter->setPen(Qt::white); + QString s(QChar('A' + i - 1)); + +- thePainter->drawText(x + 2 + (icon.width() - Utils::getHorizontalAdvance(thePainter->fontMetrics(), s)) / 2, +- y + yOffset + (icon.height() + thePainter->fontMetrics().ascent()) / 2 - 1, ++ thePainter->drawText(x + 2 + (w - Utils::getHorizontalAdvance(thePainter->fontMetrics(), s)) / 2, ++ y + yOffset + (h + thePainter->fontMetrics().ascent()) / 2 - 1, + s); + } + else + { + thePainter->setPen(m_pDMW->palette().window().color()); +- thePainter->drawRect(x + 1, y + yOffset - 1, icon.width() + 2, icon.height() + 2); ++ thePainter->drawRect(x + 1, y + yOffset - 1, w + 2, h + 2); + } + return; + } +diff --git a/src/main.cpp b/src/main.cpp +index df06eab..c62aee3 100644 +--- a/src/main.cpp ++++ b/src/main.cpp +@@ -81,6 +81,7 @@ int main(int argc, char* argv[]) + { + const QLatin1String appName("kdiff3"); + ++ QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); + QApplication app(argc, argv); // KAboutData and QCommandLineParser depend on this being setup. + KLocalizedString::setApplicationDomain(appName.data()); + +diff --git a/src/mergeresultwindow.cpp b/src/mergeresultwindow.cpp +index 894bc44..29d16ae 100644 +--- a/src/mergeresultwindow.cpp ++++ b/src/mergeresultwindow.cpp +@@ -1970,8 +1970,11 @@ void MergeResultWindow::paintEvent(QPaintEvent*) + if(!m_bCursorUpdate) // Don't redraw everything for blinking cursor? + { + m_selection.bSelectionContainsData = false; +- if(size() != m_pixmap.size()) +- m_pixmap = QPixmap(size()); ++ const auto dpr = devicePixelRatioF(); ++ if(size() * dpr != m_pixmap.size()) { ++ m_pixmap = QPixmap(size() * dpr); ++ m_pixmap.setDevicePixelRatio(dpr); ++ } + + RLPainter p(&m_pixmap, m_pOptions->m_bRightToLeftLanguage, width(), fontWidth); + p.setFont(font()); +-- +2.27.0 + diff --git a/kde-misc/kdiff3/kdiff3-1.8.3-r1.ebuild b/kde-misc/kdiff3/kdiff3-1.8.3-r1.ebuild new file mode 100644 index 000000000000..9611b4dd9139 --- /dev/null +++ b/kde-misc/kdiff3/kdiff3-1.8.3-r1.ebuild @@ -0,0 +1,41 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +ECM_HANDBOOK="forceoptional" +KFMIN=5.60.0 +QTMIN=5.12.3 +inherit ecm kde.org + +DESCRIPTION="Frontend to diff3 based on KDE Frameworks" +HOMEPAGE="https://kde.org/applications/development/org.kde.kdiff3 +https://userbase.kde.org/KDiff3" +SRC_URI="mirror://kde/stable/${PN}/${P}.tar.xz" + +LICENSE="GPL-2" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" +IUSE="" + +DEPEND=" + >=dev-qt/qtgui-${QTMIN}:5 + >=dev-qt/qtprintsupport-${QTMIN}:5 + >=dev-qt/qtwidgets-${QTMIN}:5 + >=kde-frameworks/kconfig-${KFMIN}:5 + >=kde-frameworks/kconfigwidgets-${KFMIN}:5 + >=kde-frameworks/kcoreaddons-${KFMIN}:5 + >=kde-frameworks/kcrash-${KFMIN}:5 + >=kde-frameworks/ki18n-${KFMIN}:5 + >=kde-frameworks/kiconthemes-${KFMIN}:5 + >=kde-frameworks/kio-${KFMIN}:5 + >=kde-frameworks/kparts-${KFMIN}:5 + >=kde-frameworks/ktextwidgets-${KFMIN}:5 + >=kde-frameworks/kwidgetsaddons-${KFMIN}:5 + >=kde-frameworks/kxmlgui-${KFMIN}:5 +" +RDEPEND="${DEPEND} + sys-apps/diffutils +" + +PATCHES=( "${FILESDIR}/${P}-hidpi.patch" ) |