Index: kexi/plugins/forms/kexidataprovider.cpp =================================================================== --- kexi/plugins/forms/kexidataprovider.cpp (revision 542130) +++ kexi/plugins/forms/kexidataprovider.cpp (revision 542131) @@ -92,7 +92,8 @@ for (KexiFormDataItemInterfaceToIntMap::ConstIterator it = m_fieldNumbersForDataItems.constBegin(); it!=m_fieldNumbersForDataItems.constEnd(); ++it) { - kexipluginsdbg << "fill data of '" << it.key()->dataSource() << "' at idx=" << it.data() << endl; + kexipluginsdbg << "fill data of '" << it.key()->dataSource() << "' at idx=" << it.data() + << " data=" << row.at(it.data()) << endl; it.key()->setValue( row.at(it.data()) ); } } Index: kexi/plugins/forms/widgets/kexidbautofield.cpp =================================================================== --- kexi/plugins/forms/widgets/kexidbautofield.cpp (revision 542130) +++ kexi/plugins/forms/widgets/kexidbautofield.cpp (revision 542131) @@ -446,8 +446,11 @@ @todo look at makeFirstCharacterUpperCaseInAutoLabels setting [bool] (see doc/dev/settings.txt) */ if (!text.isEmpty()) { - realText = text[0].upper(); - realText += (text.mid(1) + ": "); + realText = text[0].upper() + text.mid(1); + if (m_widgetType!=Boolean) { +//! @todo ":" suffix looks weird for checkbox; remove this condition when [x] is displayed _after_ label + realText += ": "; + } } } else Index: kexi/plugins/forms/widgets/kexidbcheckbox.cpp =================================================================== --- kexi/plugins/forms/widgets/kexidbcheckbox.cpp (revision 542130) +++ kexi/plugins/forms/widgets/kexidbcheckbox.cpp (revision 542131) @@ -27,7 +27,9 @@ : QCheckBox(text, parent, name), KexiFormDataItemInterface() { m_invalidState = false; +//! todo: tristate setTristate(true); + setFocusPolicy(QWidget::StrongFocus); connect(this, SIGNAL(stateChanged(int)), this, SLOT(slotStateChanged(int))); } @@ -56,13 +58,16 @@ void KexiDBCheckBox::setValueInternal(const QVariant &add, bool ) { - setState( add.isNull() ? NoChange : (add.toBool() ? On : Off) ); +// setState( add.isNull() ? NoChange : (add.toBool() ? On : Off) ); + setState( m_origValue.isNull() ? NoChange : (m_origValue.toBool() ? On : Off) ); } QVariant KexiDBCheckBox::value() { - return QVariant( isChecked(), 3 ); + if (state()==NoChange) + return QVariant(); + return QVariant(state()==On, 1); } void KexiDBCheckBox::slotStateChanged(int )