summaryrefslogtreecommitdiffstats
path: root/sigmodr/tree
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-05-21 13:32:02 -0400
committerBen Boeckel <MathStuf@gmail.com>2009-05-21 13:32:02 -0400
commit10a70d1e4844338a443a5693d7df16e14144677f (patch)
tree4049b8d1c3835fc07aae304bed4803f7a074751f /sigmodr/tree
parentb69e8e3f182a7727f420e967d2aed9fc1430ce91 (diff)
downloadsigen-10a70d1e4844338a443a5693d7df16e14144677f.tar.gz
sigen-10a70d1e4844338a443a5693d7df16e14144677f.tar.xz
sigen-10a70d1e4844338a443a5693d7df16e14144677f.zip
Fix up the flags for indexes other than the first
Diffstat (limited to 'sigmodr/tree')
-rw-r--r--sigmodr/tree/TreeModel.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/sigmodr/tree/TreeModel.cpp b/sigmodr/tree/TreeModel.cpp
index 879d56d3..024b27e9 100644
--- a/sigmodr/tree/TreeModel.cpp
+++ b/sigmodr/tree/TreeModel.cpp
@@ -124,7 +124,29 @@ Qt::ItemFlags TreeModel::flags(const QModelIndex& index) const
{
if (!index.isValid())
return Qt::ItemFlags();
- return static_cast<TreeItem*>(index.internalPointer())->flags();
+ Qt::ItemFlags f;
+ TreeItem* item = static_cast<TreeItem*>(index.internalPointer());
+ switch (index.column())
+ {
+ case 0:
+ f |= item->flags();
+ break;
+ case 1:
+ if (item->canEdit())
+ f |= Qt::ItemIsEnabled;
+ break;
+ case 2:
+ if (item->canRemove())
+ f |= Qt::ItemIsEnabled;
+ break;
+ case 3:
+ if (item->canAddTo())
+ f |= Qt::ItemIsEnabled;
+ break;
+ default:
+ break;
+ }
+ return f;
}
QStringList TreeModel::mimeTypes() const