diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-12-09 15:56:26 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:12:08 -0300 |
commit | 627624f6b5bf1135cd97052baae52286e8e16024 (patch) | |
tree | 7c62cb42589ec632628cc628ce2ffaff3300de5a /generator | |
parent | 8dfeff8c11077f2f504476e282b11c3ca0a8cd83 (diff) |
Code generated for Qt's signals wrapping now deal with arguments with default values.
For instance, the "QAbstractButton::clicked(bool checked = false)"
signal, can be connected using the two signatures "clicked()" and
"clicked(bool)". Using
button.clicked.connect(callback_function)
could cause the binding to connect to "clicked(bool)", instead of
"clicked()", leaving the user unaware of it.
Reviewed by Hugo Parente <hugo.lima@openbossa.org>
Reviewed by Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'generator')
-rw-r--r-- | generator/cppgenerator.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/generator/cppgenerator.cpp b/generator/cppgenerator.cpp index 00aa85876..565718c35 100644 --- a/generator/cppgenerator.cpp +++ b/generator/cppgenerator.cpp @@ -2993,6 +2993,13 @@ void CppGenerator::writeSignalInitialization(QTextStream& s, const AbstractMetaC QString cppSignature = QMetaObject::normalizedType(qPrintable(type->cppSignature())); QString originalSignature = QMetaObject::normalizedType(qPrintable(type->originalTypeDescription())); + if (!a->defaultValueExpression().isEmpty()) { + QString sig = QMetaObject::normalizedSignature(signature.toAscii()); + if (sig.isEmpty()) + sig = "void"; + signatures[cppSignal->name()].append(sig); + } + if ((cppSignature != originalSignature) && !knowTypes.contains(originalSignature)) { knowTypes << originalSignature; s << INDENT << "Shiboken::TypeResolver::createValueTypeResolver<" |