On Tue, Mar 5, 2013 at 6:59 AM, Filipe Correia <fcorr...@gmail.com> wrote:
> 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... > This sounds a lot like http://trac.edgewall.org/ticket/9528. There's an explanation and a patch at http://trac.edgewall.org/ticket/10953#comment:8(which has been closed as a duplicate) -- the patch would solve this problem, but causes some subtle side effects that may not be acceptable. I haven't refreshed my memory lately, but I think the best/only workaround is to delay your add_script() calls somehow until post_process_request(), perhaps by setting some state on your component or on the request object itself (but **not** on request.chrome!) during process_request() and then checking for that state in post_process_request(). More eyes on #9528 would be great too, if you want to try coming up with a better patch. :-) -Ethan -- You received this message because you are subscribed to the Google Groups "Trac Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to trac-dev+unsubscr...@googlegroups.com. To post to this group, send email to trac-dev@googlegroups.com. Visit this group at http://groups.google.com/group/trac-dev?hl=en. For more options, visit https://groups.google.com/groups/opt_out.