summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-12-19 17:51:19 +0100
committerChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-12-24 22:17:19 +0000
commit32897fd0b98966d22ecbd475a0e6a77ca8b1108d (patch)
tree89b202ba300adcbf858ced7469d924014e711614
parente9f39c40d98213877317a42d30b78cba102e2017 (diff)
downloadqttools-32897fd0b98966d22ecbd475a0e6a77ca8b1108d.tar.gz
QList/Tree/TableWidgetEdit: use correct default flags
The AbstractItemEditor was using the default flags from an QListWidgetItem as the default values for QList/Tree/tableWidgetItem which is wrong because the different classes have different default flags. This lead to an inconsistent behavior during runtime. E.g. a QTableWidgetItem was not editable but during runtime it was editable. This fix adds a new function to retrieve the correct default flags dependending on the selected widget type. Change-Id: I96e1dec5a459a4d746b469bd773ddb7526e65357 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
-rw-r--r--src/designer/src/components/taskmenu/itemlisteditor.cpp12
-rw-r--r--src/designer/src/components/taskmenu/itemlisteditor.h2
-rw-r--r--src/designer/src/components/taskmenu/tablewidgeteditor.cpp6
-rw-r--r--src/designer/src/components/taskmenu/tablewidgeteditor.h1
-rw-r--r--src/designer/src/components/taskmenu/treewidgeteditor.cpp6
-rw-r--r--src/designer/src/components/taskmenu/treewidgeteditor.h1
6 files changed, 25 insertions, 3 deletions
diff --git a/src/designer/src/components/taskmenu/itemlisteditor.cpp b/src/designer/src/components/taskmenu/itemlisteditor.cpp
index 94ec1e1cc..db31745a3 100644
--- a/src/designer/src/components/taskmenu/itemlisteditor.cpp
+++ b/src/designer/src/components/taskmenu/itemlisteditor.cpp
@@ -168,7 +168,7 @@ void AbstractItemEditor::propertyChanged(QtProperty *property)
// Subproperty
return;
- if ((role == ItemFlagsShadowRole && prop->value().toInt() == int(QListWidgetItem().flags()))
+ if ((role == ItemFlagsShadowRole && prop->value().toInt() == defaultItemFlags())
|| (role == Qt::DecorationPropertyRole && !qvariant_cast<PropertySheetIconValue>(prop->value()).mask())
|| (role == Qt::FontRole && !qvariant_cast<QFont>(prop->value()).resolve())) {
prop->setModified(false);
@@ -214,7 +214,7 @@ void AbstractItemEditor::resetProperty(QtProperty *property)
QtVariantProperty *prop = m_propertyManager->variantProperty(property);
int role = m_propertyToRole.value(prop);
if (role == ItemFlagsShadowRole)
- prop->setValue(QVariant::fromValue(int(QListWidgetItem().flags())));
+ prop->setValue(QVariant::fromValue(defaultItemFlags()));
else
prop->setValue(QVariant(prop->valueType(), nullptr));
prop->setModified(false);
@@ -246,7 +246,7 @@ void AbstractItemEditor::updateBrowser()
QVariant val = getItemData(role);
if (!val.isValid()) {
if (role == ItemFlagsShadowRole)
- val = QVariant::fromValue(int(QListWidgetItem().flags()));
+ val = QVariant::fromValue(defaultItemFlags());
else
val = QVariant(int(prop->value().userType()), nullptr);
prop->setModified(false);
@@ -430,6 +430,12 @@ QVariant ItemListEditor::getItemData(int role) const
return ui.listWidget->currentItem()->data(role);
}
+int ItemListEditor::defaultItemFlags() const
+{
+ static const int flags = QListWidgetItem().flags();
+ return flags;
+}
+
void ItemListEditor::cacheReloaded()
{
reloadIconResources(iconCache(), ui.listWidget);
diff --git a/src/designer/src/components/taskmenu/itemlisteditor.h b/src/designer/src/components/taskmenu/itemlisteditor.h
index ea0634eed..e9b292446 100644
--- a/src/designer/src/components/taskmenu/itemlisteditor.h
+++ b/src/designer/src/components/taskmenu/itemlisteditor.h
@@ -85,6 +85,7 @@ private slots:
void resetProperty(QtProperty *property);
protected:
+ virtual int defaultItemFlags() const = 0;
void setupProperties(PropertyDefinition *propDefs);
void setupObject(QWidget *object);
void setupEditor(QWidget *object, PropertyDefinition *propDefs);
@@ -138,6 +139,7 @@ private slots:
protected:
void setItemData(int role, const QVariant &v) override;
QVariant getItemData(int role) const override;
+ int defaultItemFlags() const override;
private:
void setPropertyBrowserVisible(bool v);
diff --git a/src/designer/src/components/taskmenu/tablewidgeteditor.cpp b/src/designer/src/components/taskmenu/tablewidgeteditor.cpp
index 4a28a2f44..b1a7adf12 100644
--- a/src/designer/src/components/taskmenu/tablewidgeteditor.cpp
+++ b/src/designer/src/components/taskmenu/tablewidgeteditor.cpp
@@ -184,6 +184,12 @@ QVariant TableWidgetEditor::getItemData(int role) const
return item->data(role);
}
+int TableWidgetEditor::defaultItemFlags() const
+{
+ static const int flags = QTableWidgetItem().flags();
+ return flags;
+}
+
void TableWidgetEditor::on_tableWidget_currentCellChanged(int currentRow, int currentCol, int, int /* XXX remove me */)
{
m_rowEditor->setCurrentIndex(currentRow);
diff --git a/src/designer/src/components/taskmenu/tablewidgeteditor.h b/src/designer/src/components/taskmenu/tablewidgeteditor.h
index 26ad05b49..72dbb58da 100644
--- a/src/designer/src/components/taskmenu/tablewidgeteditor.h
+++ b/src/designer/src/components/taskmenu/tablewidgeteditor.h
@@ -82,6 +82,7 @@ private slots:
protected:
void setItemData(int role, const QVariant &v) override;
QVariant getItemData(int role) const override;
+ int defaultItemFlags() const override;
private:
void setPropertyBrowserVisible(bool v);
diff --git a/src/designer/src/components/taskmenu/treewidgeteditor.cpp b/src/designer/src/components/taskmenu/treewidgeteditor.cpp
index 2ec0109a4..20c7bd0a5 100644
--- a/src/designer/src/components/taskmenu/treewidgeteditor.cpp
+++ b/src/designer/src/components/taskmenu/treewidgeteditor.cpp
@@ -196,6 +196,12 @@ QVariant TreeWidgetEditor::getItemData(int role) const
return ui.treeWidget->currentItem()->data(col, role);
}
+int TreeWidgetEditor::defaultItemFlags() const
+{
+ static const int flags = QTreeWidgetItem().flags();
+ return flags;
+}
+
void TreeWidgetEditor::on_newItemButton_clicked()
{
QTreeWidgetItem *curItem = ui.treeWidget->currentItem();
diff --git a/src/designer/src/components/taskmenu/treewidgeteditor.h b/src/designer/src/components/taskmenu/treewidgeteditor.h
index a0187678d..9b1a607e4 100644
--- a/src/designer/src/components/taskmenu/treewidgeteditor.h
+++ b/src/designer/src/components/taskmenu/treewidgeteditor.h
@@ -80,6 +80,7 @@ private slots:
protected:
void setItemData(int role, const QVariant &v) override;
QVariant getItemData(int role) const override;
+ int defaultItemFlags() const override;
private:
void setPropertyBrowserVisible(bool v);