diff --git a/src/kits/app/Handler.cpp b/src/kits/app/Handler.cpp index 9351574167..a30f0fb7cc 100644 --- a/src/kits/app/Handler.cpp +++ b/src/kits/app/Handler.cpp @@ -412,9 +412,12 @@ BHandler::AddFilter(BMessageFilter *filter) } #endif + if (fLooper != NULL) + filter->SetLooper(fLooper); + if (!fFilters) fFilters = new BList; - + fFilters->AddItem(filter); } @@ -775,9 +778,14 @@ BHandler::operator=(const BHandler &) void -BHandler::SetLooper(BLooper *loop) +BHandler::SetLooper(BLooper *looper) { - fLooper = loop; + fLooper = looper; + + if (fFilters) { + for (int32 i = 0; i < fFilters->CountItems(); i++) + static_cast(fFilters->ItemAtFast(i))->SetLooper(looper); + } } diff --git a/src/kits/app/Looper.cpp b/src/kits/app/Looper.cpp index 666bdd2077..23ed502940 100644 --- a/src/kits/app/Looper.cpp +++ b/src/kits/app/Looper.cpp @@ -378,13 +378,6 @@ BLooper::AddHandler(BHandler* handler) handler->SetLooper(this); if (handler != this) // avoid a cycle handler->SetNextHandler(this); - - BList* filters = handler->FilterList(); - if (filters) { - for (int32 i = 0; i < filters->CountItems(); ++i) { - ((BMessageFilter*)filters->ItemAt(i))->SetLooper(this); - } - } } }