From 2bc172dd24c7160a056a207d2b1a05ccf51cc881 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Wed, 31 Aug 2022 07:24:31 +0200 Subject: [PATCH] more precise logic for dropping --- src/librssguard/core/feedsproxymodel.cpp | 20 +++++++++++++++++++ src/librssguard/core/feedsproxymodel.h | 5 +++++ src/librssguard/definitions/definitions.h | 10 +++++----- src/librssguard/miscellaneous/skinfactory.cpp | 2 +- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/librssguard/core/feedsproxymodel.cpp b/src/librssguard/core/feedsproxymodel.cpp index a38319de2..6499cfe76 100644 --- a/src/librssguard/core/feedsproxymodel.cpp +++ b/src/librssguard/core/feedsproxymodel.cpp @@ -44,6 +44,26 @@ FeedsProxyModel::~FeedsProxyModel() { qDebugNN << LOGSEC_FEEDMODEL << "Destroying FeedsProxyModel instance"; } +bool FeedsProxyModel::canDropMimeData(const QMimeData* data, + Qt::DropAction action, + int row, + int column, + const QModelIndex& parent) const { + + auto src_idx = row < 0 ? mapToSource(parent) : mapToSource(index(row, column, parent)); + auto* src_item = m_sourceModel->itemForIndex(src_idx); + + if (src_item != nullptr) { + auto can_drop = src_item->kind() == RootItem::Kind::ServiceRoot || src_item->kind() == RootItem::Kind::Category || + src_item->kind() == RootItem::Kind::Feed; + + return QSortFilterProxyModel::canDropMimeData(data, action, row, column, parent) && can_drop; + } + else { + return false; + } +} + QModelIndexList FeedsProxyModel::match(const QModelIndex& start, int role, const QVariant& value, diff --git a/src/librssguard/core/feedsproxymodel.h b/src/librssguard/core/feedsproxymodel.h index c5959a474..1e8866bb2 100644 --- a/src/librssguard/core/feedsproxymodel.h +++ b/src/librssguard/core/feedsproxymodel.h @@ -17,6 +17,11 @@ class FeedsProxyModel : public QSortFilterProxyModel { explicit FeedsProxyModel(FeedsModel* source_model, QObject* parent = nullptr); virtual ~FeedsProxyModel(); + virtual bool canDropMimeData(const QMimeData* data, + Qt::DropAction action, + int row, + int column, + const QModelIndex& parent) const; virtual bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, diff --git a/src/librssguard/definitions/definitions.h b/src/librssguard/definitions/definitions.h index 0d5089ae7..2056a0600 100644 --- a/src/librssguard/definitions/definitions.h +++ b/src/librssguard/definitions/definitions.h @@ -215,18 +215,18 @@ #define APP_SKIN_USER_FOLDER "skins" #define APP_SKIN_DEFAULT "nudus-light" #define APP_SKIN_METADATA_FILE "metadata.xml" - -#if defined(Q_OS_WIN) -#define APP_STYLE_DEFAULT "windowsvista" -#else #define APP_STYLE_DEFAULT "Fusion" + +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(FORCE_BUNDLE_ICONS) +#define APP_THEME_DEFAULT "" +#else +#define APP_THEME_DEFAULT "Breeze" #endif #if defined(FORCE_BUNDLE_ICONS) // Forcibly bundle icons. #define APP_THEME_DEFAULT "Breeze" #elif defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) -// DO NOT icons on Linux. #define APP_THEME_DEFAULT "" #else // Bundle icons otherwise. diff --git a/src/librssguard/miscellaneous/skinfactory.cpp b/src/librssguard/miscellaneous/skinfactory.cpp index 1bc28213c..0944e614f 100644 --- a/src/librssguard/miscellaneous/skinfactory.cpp +++ b/src/librssguard/miscellaneous/skinfactory.cpp @@ -45,7 +45,7 @@ void SkinFactory::loadCurrentSkin() { } bool SkinFactory::isStyleGoodForAlternativeStylePalette(const QString& style_name) const { - static QRegularExpression re = QRegularExpression("^(fusion)|(qt[56]ct-style)$"); + static QRegularExpression re = QRegularExpression("^(fusion|windows|qt[56]ct-style)$"); return re.match(style_name.toLower()).hasMatch(); }