From 275b46054f8fe8b287b86a763a2fa3fd67893d9d Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Wed, 17 Jun 2020 17:56:01 +0000 Subject: [PATCH] optimize QKeySequence::matches() Signed-off-by: Ivailo Monev --- src/gui/kernel/qkeysequence.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp index a0729bf92..5dce8891c 100644 --- a/src/gui/kernel/qkeysequence.cpp +++ b/src/gui/kernel/qkeysequence.cpp @@ -1120,23 +1120,22 @@ QString QKeySequencePrivate::encodeString(int key, QKeySequence::SequenceFormat */ QKeySequence::SequenceMatch QKeySequence::matches(const QKeySequence &seq) const { - int userN = count(); - int seqN = seq.count(); + const int userN = count(); + const int seqN = seq.count(); if (userN > seqN) - return NoMatch; + return SequenceMatch::NoMatch; + + for (int i = 0; i < userN; i++) { + if (d->key[i] != seq.d->key[i]) + return SequenceMatch::NoMatch; + } // If equal in length, we have a potential ExactMatch sequence, // else we already know it can only be partial. - SequenceMatch match = (userN == seqN ? ExactMatch : PartialMatch); - - for (int i = 0; i < userN; ++i) { - int userKey = (*this)[i], - sequenceKey = seq[i]; - if (userKey != sequenceKey) - return NoMatch; - } - return match; + if (userN == seqN) + return SequenceMatch::ExactMatch; + return SequenceMatch::PartialMatch; } /*! -- 2.11.0