From 80bc133da937e5351e5ed95443093ec1efac5640 Mon Sep 17 00:00:00 2001 From: Kai Uwe Broulik Date: Thu, 19 Jul 2018 10:17:16 +0200 Subject: [KItemListSelectionToggle] Adjust painting icon for high dpi scaling Instead of using KIconLoader which currently doesn't support high dpi scaling, use QIcon::fromTheme which can. Differential Revision: https://phabricator.kde.org/D14222 --- src/kitemviews/private/kitemlistselectiontoggle.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/kitemviews/private/kitemlistselectiontoggle.cpp b/src/kitemviews/private/kitemlistselectiontoggle.cpp index d6e434244..5519e4da8 100644 --- a/src/kitemviews/private/kitemlistselectiontoggle.cpp +++ b/src/kitemviews/private/kitemlistselectiontoggle.cpp @@ -21,9 +21,9 @@ #include +#include #include - KItemListSelectionToggle::KItemListSelectionToggle(QGraphicsItem* parent) : QGraphicsWidget(parent, nullptr), m_checked(false), @@ -67,8 +67,8 @@ void KItemListSelectionToggle::paint(QPainter* painter, const QStyleOptionGraphi updatePixmap(); } - const qreal x = (size().width() - qreal(m_pixmap.width())) / 2; - const qreal y = (size().height() - qreal(m_pixmap.height())) / 2; + const qreal x = (size().width() - qreal(m_pixmap.width() / m_pixmap.devicePixelRatioF())) / 2; + const qreal y = (size().height() - qreal(m_pixmap.height() / m_pixmap.devicePixelRatioF())) / 2; painter->drawPixmap(x, y, m_pixmap); } @@ -77,7 +77,7 @@ void KItemListSelectionToggle::resizeEvent(QGraphicsSceneResizeEvent* event) QGraphicsWidget::resizeEvent(event); if (!m_pixmap.isNull()) { - const int pixmapSize = m_pixmap.size().width(); // Pixmap width is always equal pixmap height + const int pixmapSize = m_pixmap.size().width() / m_pixmap.devicePixelRatioF(); // Pixmap width is always equal pixmap height if (pixmapSize != iconSize()) { // If the required icon size is different from the actual pixmap size, @@ -91,8 +91,7 @@ void KItemListSelectionToggle::resizeEvent(QGraphicsSceneResizeEvent* event) void KItemListSelectionToggle::updatePixmap() { const QString icon = m_checked ? QStringLiteral("emblem-remove") : QStringLiteral("emblem-added"); - const KIconLoader::States state = m_hovered ? KIconLoader::ActiveState : KIconLoader::DisabledState; - m_pixmap = KIconLoader::global()->loadIcon(icon, KIconLoader::Desktop, iconSize(), state); + m_pixmap = QIcon::fromTheme(icon).pixmap(iconSize(), m_hovered ? QIcon::Active : QIcon::Disabled); } int KItemListSelectionToggle::iconSize() const -- cgit v1.3 From 2cbf3cb11ea668577121fa755c1ddacc6f0acdd8 Mon Sep 17 00:00:00 2001 From: David Hallas Date: Wed, 18 Jul 2018 16:43:25 -0600 Subject: Fixes small memory leak in DolphinContextMenu Summary: When DolphinContextMenu::baseFileItem is called a KFileItem is allocated and stored in DolphinContextMenu::m_baseFileItem, which is of type KFileItem*, but the destructor failed to delete this. Test Plan: This leak was found using Address Sanitizer Reviewers: broulik, elvisangelaccio Reviewed By: broulik, elvisangelaccio Subscribers: ngraham, kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D14178 --- src/dolphincontextmenu.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp index 7d7d7a408..8fdaab1d0 100644 --- a/src/dolphincontextmenu.cpp +++ b/src/dolphincontextmenu.cpp @@ -81,6 +81,8 @@ DolphinContextMenu::DolphinContextMenu(DolphinMainWindow* parent, DolphinContextMenu::~DolphinContextMenu() { + delete m_baseFileItem; + m_baseFileItem = nullptr; delete m_selectedItemsProperties; m_selectedItemsProperties = nullptr; } -- cgit v1.3 From 6d011e97305cc575b1a5b2d9ca96e8038ea3b27a Mon Sep 17 00:00:00 2001 From: Kai Uwe Broulik Date: Thu, 26 Jul 2018 10:17:36 +0200 Subject: Compare UDS entry times directly instead of going through KFileItem This avoids creating a QDateTime object with all the timezone processing that comes with it since we're only interested in the relative order, not absolute precise date time values. CHANGELOG: Sorting files by date is significantly faster now Differential Revision: https://phabricator.kde.org/D14394 --- src/kitemviews/kfileitemmodel.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index 56c21f51c..d2c8429ac 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -1778,8 +1778,8 @@ int KFileItemModel::sortRoleCompare(const ItemData* a, const ItemData* b, const } case ModificationTimeRole: { - const QDateTime dateTimeA = itemA.time(KFileItem::ModificationTime); - const QDateTime dateTimeB = itemB.time(KFileItem::ModificationTime); + const long long dateTimeA = itemA.entry().numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME, -1); + const long long dateTimeB = itemB.entry().numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME, -1); if (dateTimeA < dateTimeB) { result = -1; } else if (dateTimeA > dateTimeB) { @@ -1789,8 +1789,8 @@ int KFileItemModel::sortRoleCompare(const ItemData* a, const ItemData* b, const } case CreationTimeRole: { - const QDateTime dateTimeA = itemA.time(KFileItem::CreationTime); - const QDateTime dateTimeB = itemB.time(KFileItem::CreationTime); + const long long dateTimeA = itemA.entry().numberValue(KIO::UDSEntry::UDS_CREATION_TIME, -1); + const long long dateTimeB = itemB.entry().numberValue(KIO::UDSEntry::UDS_CREATION_TIME, -1); if (dateTimeA < dateTimeB) { result = -1; } else if (dateTimeA > dateTimeB) { -- cgit v1.3