Hi,
So, I think I've found a bug!
I'm developing a plugin that implements IRequestHandler and
INavigationContributor. My "process_request()" method calls
"add_script()" a couple of times. For reasons I don't fully
understand, the "get_active_navigation_item()" method gets called in
these situations, but I'm assuming it's by design.
Note that "process_request()" belongs to the IRequestHandler extension
point, and "get_active_navigation_item()" belongs to the
INavigationContributor extension point.
The issue is, I need to implement these extensions points in two
distinct Component classes. But when I split the Component class in
two (one for each extension point) the "get_active_navigation_item()"
is no longer called, so the item that I'm adding to the mainnav no
longer shows highlighted...
I am sure that both Component classes are being picked up by trac as
the other methods of the extensions points are being invoked (e.g.,
the get_navigation_items() method is being called).
I've tracked this as far as
trac.web.chrome.py. I think the relevant
lines are these:
if contributor is handler:
active =
contributor.get_active_navigation_item(req)
I can't figure out where the "handler" value comes from, but I've
confirmed that it is never an instance of the component implementing
INavigationContributor.
Any help appreciated.
thanks in advance!
Filipe Correia