QInputDialog: simplify signalForMember()

Instead of playing clever tricks with the index variable, simply
scan through the list of argument-carrying signals and, if nothing
fits there, fall explicitly back to accepted().

Change-Id: I1be49ce601edb854cc1bab5be994b2c09fe31b3c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
This commit is contained in:
Marc Mutz 2014-04-07 10:05:37 +02:00
parent c2cc74f862
commit 46a0a87b2a

View File

@ -64,7 +64,6 @@ enum CandidateSignal {
TextValueSelectedSignal,
IntValueSelectedSignal,
DoubleValueSelectedSignal,
AcceptedSignal,
NumCandidateSignals
};
@ -75,7 +74,6 @@ static const char *candidateSignal(int which)
case TextValueSelectedSignal: return SIGNAL(textValueSelected(QString));
case IntValueSelectedSignal: return SIGNAL(intValueSelected(int));
case DoubleValueSelectedSignal: return SIGNAL(doubleValueSelected(double));
case AcceptedSignal: return SIGNAL(accepted());
case NumCandidateSignals: ; // fall through
};
@ -87,13 +85,12 @@ static const char *signalForMember(const char *member)
{
QByteArray normalizedMember(QMetaObject::normalizedSignature(member));
int i = 0;
while (i < NumCandidateSignals - 1) { // sic
for (int i = 0; i < NumCandidateSignals; ++i)
if (QMetaObject::checkConnectArgs(candidateSignal(i), normalizedMember))
break;
++i;
}
return candidateSignal(i);
return candidateSignal(i);
// otherwise, use fit-all accepted signal:
return SIGNAL(accepted());
}
QT_BEGIN_NAMESPACE