void Panel::grab_pointer(Widget &wdg)
{
if(pointer_grab==0 || pointer_focus==&wdg)
+ {
set_pointer_focus(&wdg, 255);
+ if(parent)
+ parent->grab_pointer(*this);
+ }
else
throw InvalidState("Pointer is already grabbed");
}
void Panel::ungrab_pointer(Widget &wdg)
{
if(pointer_focus==&wdg)
+ {
set_pointer_focus(0, 0);
+ if(parent)
+ parent->ungrab_pointer(*this);
+ }
else if(pointer_grab>0)
throw Exception("Someone is trying to steal the pointer!");
}