summaryrefslogtreecommitdiff
path: root/src/plugins/cppeditor/cppoverviewmodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cppeditor/cppoverviewmodel.cpp')
-rw-r--r--src/plugins/cppeditor/cppoverviewmodel.cpp38
1 files changed, 36 insertions, 2 deletions
diff --git a/src/plugins/cppeditor/cppoverviewmodel.cpp b/src/plugins/cppeditor/cppoverviewmodel.cpp
index de7a8df2f4..9e032ce922 100644
--- a/src/plugins/cppeditor/cppoverviewmodel.cpp
+++ b/src/plugins/cppeditor/cppoverviewmodel.cpp
@@ -126,10 +126,10 @@ public:
case Qt::DecorationRole:
return Icons::iconForSymbol(symbol);
- case AbstractOverviewModel::FileNameRole:
+ case OverviewModel::FileNameRole:
return QString::fromUtf8(symbol->fileName(), symbol->fileNameLength());
- case AbstractOverviewModel::LineNumberRole:
+ case OverviewModel::LineNumberRole:
return symbol->line();
default:
@@ -168,6 +168,40 @@ Symbol *OverviewModel::symbolFromIndex(const QModelIndex &index) const
return item ? item->symbol : nullptr;
}
+Qt::ItemFlags OverviewModel::flags(const QModelIndex &index) const
+{
+ if (!index.isValid())
+ return Qt::NoItemFlags;
+
+ return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled;
+}
+
+Qt::DropActions OverviewModel::supportedDragActions() const
+{
+ return Qt::MoveAction;
+}
+
+QStringList OverviewModel::mimeTypes() const
+{
+ return Utils::DropSupport::mimeTypesForFilePaths();
+}
+
+QMimeData *OverviewModel::mimeData(const QModelIndexList &indexes) const
+{
+ auto mimeData = new Utils::DropMimeData;
+ for (const QModelIndex &index : indexes) {
+ const QVariant fileName = data(index, FileNameRole);
+ if (!fileName.canConvert<QString>())
+ continue;
+ const QVariant lineNumber = data(index, LineNumberRole);
+ if (!lineNumber.canConvert<unsigned>())
+ continue;
+ mimeData->addFile(Utils::FilePath::fromVariant(fileName),
+ static_cast<int>(lineNumber.value<unsigned>()));
+ }
+ return mimeData;
+}
+
void OverviewModel::rebuild(Document::Ptr doc)
{
beginResetModel();