QObject: Optimize removeEventFilter

We can't have duplicated filters installed,
so break the loop when removing event filter after we
have found the matching one.

Change-Id: Idda87f3090954e020b27bf3fab62677128607f03
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
(cherry picked from commit b909b8dfe808ed6bbb9f4353729c8810ee0e95c7)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Jarek Kobus 2024-01-05 11:24:06 +01:00 committed by Qt Cherry-pick Bot
parent af9b70c5ed
commit a16964e471

View File

@ -2374,9 +2374,11 @@ void QObject::removeEventFilter(QObject *obj)
{
Q_D(QObject);
if (d->extraData) {
for (int i = 0; i < d->extraData->eventFilters.size(); ++i) {
if (d->extraData->eventFilters.at(i) == obj)
d->extraData->eventFilters[i] = nullptr;
for (auto &filter : d->extraData->eventFilters) {
if (filter == obj) {
filter = nullptr;
break;
}
}
}
}