+ // determine where does this even originate from to avoid redirecting it
+ // back to the page which generated it (resulting in an infinite loop)
+
+ // notice that we have to check in the hard(er) way instead of just testing
+ // if the event object == this because the book control can have other
+ // subcontrols inside it (e.g. wxSpinButton in case of a notebook in wxUniv)
+ wxWindow *source = wxStaticCast(event.GetEventObject(), wxWindow);
+ while ( source && source != this && source->GetParent() != this )
+ {
+ source = source->GetParent();
+ }