diff --git a/src/plugins/tables/kexitabledesignerview.cpp b/src/plugins/tables/kexitabledesignerview.cpp --- a/src/plugins/tables/kexitabledesignerview.cpp +++ b/src/plugins/tables/kexitabledesignerview.cpp @@ -392,7 +392,8 @@ xi18n("Default Value"), QString(), //! @todo use "Variant" type here when supported by KProperty (KProperty::Type)field.variantType())); - prop->setOption("3rdState", xi18n("None")); + prop->setOption("3rdState", xi18n("None")); // for booleans + prop->setOption("nullValueAllowed", true); // since 3.2 set->addProperty(prop = new KProperty("primaryKey", QVariant(field.isPrimaryKey()), xi18n("Primary Key"))); @@ -980,13 +981,15 @@ const KDbField::Type newType = KDbField::typeForString(property.value().toString()); set["type"].setValue(newType); - // cast "defaultValue" property value to a new type - QVariant oldDefVal(set["defaultValue"].value()); - QVariant newDefVal(tryCastQVariant(oldDefVal, KDbField::variantType(type))); - if (oldDefVal.type() != newDefVal.type()) - set["defaultValue"].setType(newDefVal.type()); - d->setPropertyValueIfNeeded(set, "defaultValue", newDefVal, newDefVal, - changeFieldTypeCommand); + // cast "defaultValue" property value to a new type if needed + const QVariant::Type newVariantType = KDbField::variantType(type); + set["defaultValue"].setType(static_cast(newVariantType)); + const QVariant oldDefaultValue(set["defaultValue"].value()); + if (!oldDefaultValue.isNull() && newVariantType != QVariant::Invalid) { // convert value if needed + const QVariant newDefaultValue(tryCastQVariant(oldDefaultValue, newVariantType)); + d->setPropertyValueIfNeeded(set, "defaultValue", newDefaultValue, oldDefaultValue, + changeFieldTypeCommand); + } d->updatePropertiesVisibility(newType, set); //properties' visiblility changed: refresh prop. set