void Control::Up() { if (state_->Active()) { Control* target = state_->Selection(); state_->Action(target); for (ControlState* c = state_; c != nil; c = c->Prev()) { c->Deactivate(); } if (target != nil) { Busy(); target->Do(); Done(); } } }
boolean Control::IsGrabbing(Interactor* i) { if (i == this) { return true; } ControlState* c; for (c = state_; c != nil; c = c->Next()) { if (c->IsView(i)) { return true; } } for (c = state_->Prev(); c != nil; c = c->Prev()) { if (c->IsView(i)) { return true; } } return false; }