From a16964e471199f09e21a30b01a396d888032a3ad Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Fri, 5 Jan 2024 11:24:06 +0100 Subject: [PATCH] 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 (cherry picked from commit b909b8dfe808ed6bbb9f4353729c8810ee0e95c7) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/kernel/qobject.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 12e38db8148..c000452b04a 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -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; + } } } }