Yes, that is a bit of an ambiguity with Slick-C. It's a rare case. The best workaround is to change the active window and then call the method. "p_window_id" will persist as the active window in the class method.
orig_wid := p_window_id;
p_window_id = new_wid;
MyClass.Foo(1);
p_window_id = orig_wid;