From 4555d26ba28e87b99b610742d01d7210b0934259 Mon Sep 17 00:00:00 2001 From: Conway Date: Fri, 1 May 2026 10:52:44 -0400 Subject: Apply pixelated-scaling and hide-extensions patch on v26.04.0 --- .gitignore | 10 ++ PKGBUILD | 13 +- pixelated-scaling-and-hide-extensions.patch | 206 ++++++++++++++++++++++++++++ 3 files changed, 226 insertions(+), 3 deletions(-) create mode 100644 .gitignore create mode 100644 pixelated-scaling-and-hide-extensions.patch diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c3d1b4f --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# makepkg build/output dirs +src/ +pkg/ + +# downloaded source tarballs and signatures +*.tar.xz +*.tar.xz.sig + +# built packages +*.pkg.tar.zst diff --git a/PKGBUILD b/PKGBUILD index ba08e40..1b0273a 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -4,7 +4,7 @@ # Contributor: Pierre Schmitz pkgname=dolphin -pkgver=25.12.1 +pkgver=26.04.0 pkgrel=1 pkgdesc='KDE File Manager' arch=(x86_64) @@ -58,13 +58,20 @@ optdepends=('dolphin-plugins: extra plugins' 'purpose: share context menu') groups=(kde-applications kde-system) -source=(https://download.kde.org/stable/release-service/$pkgver/src/$pkgname-$pkgver.tar.xz{,.sig}) -sha256sums=('86315327422175a483e3efc61f7e7fff954d4f760efdcfff5f8713a3d10db664' +source=(https://download.kde.org/stable/release-service/$pkgver/src/$pkgname-$pkgver.tar.xz{,.sig} + pixelated-scaling-and-hide-extensions.patch) +sha256sums=('5c5e5024835fddbcd9dfaa9c16ab2bcff2475645b0e28d1b269de42e412ec543' + 'SKIP' 'SKIP') validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87 # Christoph Feck D81C0CB38EB725EF6691C385BB463350D6EF31EF) # Heiko Becker +prepare() { + cd $pkgname-$pkgver + patch -Np1 -i "$srcdir/pixelated-scaling-and-hide-extensions.patch" +} + build() { cmake -B build -S $pkgname-$pkgver \ -DBUILD_TESTING=OFF diff --git a/pixelated-scaling-and-hide-extensions.patch b/pixelated-scaling-and-hide-extensions.patch new file mode 100644 index 0000000..c80a59f --- /dev/null +++ b/pixelated-scaling-and-hide-extensions.patch @@ -0,0 +1,206 @@ +diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp +index 12b8e2a98..eb1b9e869 100644 +--- a/src/kitemviews/kfileitemmodel.cpp ++++ b/src/kitemviews/kfileitemmodel.cpp +@@ -1920,7 +1920,14 @@ QHash KFileItemModel::retrieveData(const KFileItem &item, + } + + if (m_requestRole[NameRole]) { +- data.insert(sharedValue("text"), item.text()); ++ QString displayName = item.text(); ++ if (ContentDisplaySettings::hideFileExtensions() && !isDir) { ++ const int dotIndex = displayName.lastIndexOf(QLatin1Char('.')); ++ if (dotIndex > 0) { ++ displayName = displayName.left(dotIndex); ++ } ++ } ++ data.insert(sharedValue("text"), displayName); + } + + if (m_requestRole[ExtensionRole] && !isDir) { +diff --git a/src/kitemviews/private/kpixmapmodifier.cpp b/src/kitemviews/private/kpixmapmodifier.cpp +index bf316b880..96aea26d4 100644 +--- a/src/kitemviews/private/kpixmapmodifier.cpp ++++ b/src/kitemviews/private/kpixmapmodifier.cpp +@@ -15,6 +15,8 @@ + + #include "kpixmapmodifier.h" + ++#include "dolphin_iconsmodesettings.h" ++ + #include + #include + #include +@@ -281,7 +283,10 @@ void KPixmapModifier::scale(QPixmap &pixmap, const QSize &scaledSize) + return; + } + qreal dpr = pixmap.devicePixelRatio(); +- pixmap = pixmap.scaled(scaledSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); ++ const Qt::TransformationMode mode = IconsModeSettings::usePixelatedScaling() ++ ? Qt::FastTransformation ++ : Qt::SmoothTransformation; ++ pixmap = pixmap.scaled(scaledSize, Qt::KeepAspectRatio, mode); + pixmap.setDevicePixelRatio(dpr); + } + +diff --git a/src/settings/dolphin_contentdisplaysettings.kcfg b/src/settings/dolphin_contentdisplaysettings.kcfg +index 6e8f8e9d5..dd10d09e8 100644 +--- a/src/settings/dolphin_contentdisplaysettings.kcfg ++++ b/src/settings/dolphin_contentdisplaysettings.kcfg +@@ -46,5 +46,9 @@ + + Middle + ++ ++ ++ false ++ + + +diff --git a/src/settings/dolphin_iconsmodesettings.kcfg b/src/settings/dolphin_iconsmodesettings.kcfg +index 7948af75d..d4e3ca8d5 100644 +--- a/src/settings/dolphin_iconsmodesettings.kcfg ++++ b/src/settings/dolphin_iconsmodesettings.kcfg +@@ -31,5 +31,9 @@ + + 3 + ++ ++ ++ false ++ + + +diff --git a/src/settings/viewmodes/contentdisplaytab.cpp b/src/settings/viewmodes/contentdisplaytab.cpp +index 747c3ff20..7b854182e 100644 +--- a/src/settings/viewmodes/contentdisplaytab.cpp ++++ b/src/settings/viewmodes/contentdisplaytab.cpp +@@ -10,6 +10,7 @@ + #include + + #include ++#include + #include + #include + #include +@@ -31,6 +32,7 @@ ContentDisplayTab::ContentDisplayTab(QWidget *parent) + , m_useCombinedPermissions(nullptr) + , m_elideMiddle(nullptr) + , m_elideEnding(nullptr) ++ , m_hideFileExtensions(nullptr) + { + QFormLayout *topLayout = new QFormLayout(this); + topLayout->setFormAlignment(Qt::AlignHCenter); +@@ -114,6 +116,9 @@ ContentDisplayTab::ContentDisplayTab(QWidget *parent) + elidingModeGroup->addButton(m_elideMiddle); + elidingModeGroup->addButton(m_elideEnding); + ++ m_hideFileExtensions = new QCheckBox(i18nc("@option:check", "Hide file name extensions")); ++ topLayout->addRow(QString(), m_hideFileExtensions); ++ + #ifndef Q_OS_WIN + connect(m_recursiveDirectorySizeLimit, &QSpinBox::valueChanged, this, &SettingsPageBase::changed); + connect(m_numberOfItems, &QRadioButton::toggled, this, &SettingsPageBase::changed); +@@ -133,6 +138,7 @@ ContentDisplayTab::ContentDisplayTab(QWidget *parent) + connect(m_caseSensitiveSorting, &QRadioButton::toggled, this, &SettingsPageBase::changed); + connect(m_elideMiddle, &QRadioButton::toggled, this, &SettingsPageBase::changed); + connect(m_elideEnding, &QRadioButton::toggled, this, &SettingsPageBase::changed); ++ connect(m_hideFileExtensions, &QCheckBox::toggled, this, &SettingsPageBase::changed); + + loadSettings(); + } +@@ -166,6 +172,7 @@ void ContentDisplayTab::applySettings() + } else if (m_elideEnding->isChecked()) { + settings->setElidingMode(ContentDisplaySettings::ElidingMode::Right); + } ++ settings->setHideFileExtensions(m_hideFileExtensions->isChecked()); + settings->save(); + + GeneralSettings::self()->save(); +@@ -188,6 +195,7 @@ void ContentDisplayTab::loadSettings() + loadSortingChoiceSettings(); + m_elideMiddle->setChecked(settings->elidingMode() == ContentDisplaySettings::ElidingMode::Middle); + m_elideEnding->setChecked(settings->elidingMode() == ContentDisplaySettings::ElidingMode::Right); ++ m_hideFileExtensions->setChecked(settings->hideFileExtensions()); + } + + void ContentDisplayTab::setSortingChoiceValue() +diff --git a/src/settings/viewmodes/contentdisplaytab.h b/src/settings/viewmodes/contentdisplaytab.h +index 2bae5a87c..6d673b0f6 100644 +--- a/src/settings/viewmodes/contentdisplaytab.h ++++ b/src/settings/viewmodes/contentdisplaytab.h +@@ -10,6 +10,7 @@ + #include "dolphin_generalsettings.h" + #include "settings/settingspagebase.h" + ++class QCheckBox; + class QRadioButton; + class QSpinBox; + +@@ -45,6 +46,7 @@ private: + QRadioButton *m_useCombinedPermissions; + QRadioButton *m_elideMiddle; + QRadioButton *m_elideEnding; ++ QCheckBox *m_hideFileExtensions; + }; + + #endif // GENERALTAB_H +diff --git a/src/settings/viewmodes/viewsettingstab.cpp b/src/settings/viewmodes/viewsettingstab.cpp +index 3593f23dd..12a8c11cb 100644 +--- a/src/settings/viewmodes/viewsettingstab.cpp ++++ b/src/settings/viewmodes/viewsettingstab.cpp +@@ -37,6 +37,7 @@ ViewSettingsTab::ViewSettingsTab(Mode mode, QWidget *parent) + , m_widthBox(nullptr) + , m_maxLinesBox(nullptr) + , m_expandableFolders(nullptr) ++ , m_pixelatedScaling(nullptr) + { + QFormLayout *topLayout = new QFormLayout(this); + topLayout->setFormAlignment(Qt::AlignHCenter); +@@ -93,6 +94,9 @@ ViewSettingsTab::ViewSettingsTab(Mode mode, QWidget *parent) + m_maxLinesBox->addItem(i18nc("@item:inlistbox Maximum lines", "4")); + m_maxLinesBox->addItem(i18nc("@item:inlistbox Maximum lines", "5")); + topLayout->addRow(i18nc("@label:listbox", "Maximum lines:"), m_maxLinesBox); ++ ++ m_pixelatedScaling = new QCheckBox(i18nc("@option:check", "Use pixelated thumbnail scaling")); ++ topLayout->addRow(QString(), m_pixelatedScaling); + break; + } + case CompactMode: { +@@ -135,6 +139,7 @@ ViewSettingsTab::ViewSettingsTab(Mode mode, QWidget *parent) + case IconsMode: + connect(m_widthBox, &QComboBox::currentIndexChanged, this, &ViewSettingsTab::changed); + connect(m_maxLinesBox, &QComboBox::currentIndexChanged, this, &ViewSettingsTab::changed); ++ connect(m_pixelatedScaling, &QCheckBox::toggled, this, &ViewSettingsTab::changed); + break; + case CompactMode: + connect(m_widthBox, &QComboBox::currentIndexChanged, this, &ViewSettingsTab::changed); +@@ -173,6 +178,7 @@ void ViewSettingsTab::applySettings() + case IconsMode: + IconsModeSettings::setTextWidthIndex(m_widthBox->currentIndex()); + IconsModeSettings::setMaximumTextLines(m_maxLinesBox->currentIndex()); ++ IconsModeSettings::setUsePixelatedScaling(m_pixelatedScaling->isChecked()); + IconsModeSettings::self()->save(); + break; + case CompactMode: +@@ -235,6 +241,7 @@ void ViewSettingsTab::loadSettings() + case IconsMode: + m_widthBox->setCurrentIndex(IconsModeSettings::textWidthIndex()); + m_maxLinesBox->setCurrentIndex(IconsModeSettings::maximumTextLines()); ++ m_pixelatedScaling->setChecked(IconsModeSettings::usePixelatedScaling()); + break; + case CompactMode: + m_widthBox->setCurrentIndex(CompactModeSettings::maximumTextWidthIndex()); +diff --git a/src/settings/viewmodes/viewsettingstab.h b/src/settings/viewmodes/viewsettingstab.h +index 6ea7a3bf3..2f2e75180 100644 +--- a/src/settings/viewmodes/viewsettingstab.h ++++ b/src/settings/viewmodes/viewsettingstab.h +@@ -55,6 +55,7 @@ private: + QRadioButton *m_iconAndNameOnly; + QCheckBox *m_expandableFolders; + QLabel *m_fontWarningLabel; ++ QCheckBox *m_pixelatedScaling; + }; + + #endif +\ No newline at end of file -- cgit v1.3.1