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.

Pick-to: 6.7
Change-Id: Idda87f3090954e020b27bf3fab62677128607f03
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
bb10
Jarek Kobus 2024-01-05 11:24:06 +01:00
parent 620eb390c0
commit b909b8dfe8
1 changed files with 5 additions and 3 deletions

View File

@ -2375,9 +2375,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;
}
}
}
}