X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/70656d08f95eee66d6af85a1d015dff856a459d0..56888a56:/src/panels/places/placesitemlistwidget.cpp diff --git a/src/panels/places/placesitemlistwidget.cpp b/src/panels/places/placesitemlistwidget.cpp index 745a6ae1b..2d5111c56 100644 --- a/src/panels/places/placesitemlistwidget.cpp +++ b/src/panels/places/placesitemlistwidget.cpp @@ -12,6 +12,8 @@ #include #include +#include +#include #define CAPACITYBAR_HEIGHT 2 #define CAPACITYBAR_MARGIN 2 @@ -41,15 +43,22 @@ QPalette::ColorRole PlacesItemListWidget::normalTextColorRole() const void PlacesItemListWidget::updateCapacityBar() { - const bool isDevice = !data().value("udi").toString().isEmpty(); - const QUrl url = data().value("url").toUrl(); - if (!(isDevice && url.isLocalFile())) { + const QString udi = data().value("udi").toString(); + if (udi.isEmpty()) { resetCapacityBar(); return; } + const Solid::Device device = Solid::Device(udi); + if (device.isDeviceInterface(Solid::DeviceInterface::NetworkShare) + || device.isDeviceInterface(Solid::DeviceInterface::OpticalDrive) + || device.isDeviceInterface(Solid::DeviceInterface::OpticalDisc)) { + resetCapacityBar(); + return; + } + const QUrl url = data().value("url").toUrl(); - if (m_freeSpaceInfo.job || !m_freeSpaceInfo.lastUpdated.hasExpired()) { - // Job running or cache is still valid. + if (url.isEmpty() || m_freeSpaceInfo.job || !m_freeSpaceInfo.lastUpdated.hasExpired()) { + // No url, job running or cache is still valid. return; } @@ -97,7 +106,8 @@ void PlacesItemListWidget::paint(QPainter* painter, const QStyleOptionGraphicsIt { KStandardItemListWidget::paint(painter, option, widget); - if (m_drawCapacityBar) { + // We check if option=nullptr since it is null when the place is dragged (Bug #430441) + if (m_drawCapacityBar && option) { const TextInfo* textInfo = m_textInfo.value("text"); if (textInfo) { // See KStandarItemListWidget::paint() for info on why we check textInfo. painter->save();