From 7089b0e3dcc8f8f523375aed0ce0e5051207505c Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Mon, 4 Jul 2005 21:05:53 +0000 Subject: [PATCH] If a filter was added to a handler which belonged to a looper, the filter's looper was never initialized. BHandler::SetLooper() now also sets the looper for every filter (moved from BLooper::AddHandler) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13426 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/app/Handler.cpp | 14 +++++++++++--- src/kits/app/Looper.cpp | 7 ------- 2 files changed, 11 insertions(+), 10 deletions(-) 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); - } - } } }