private void OnUnhookPanel(UnhookPanelMessage msg) { if (_panel != null) { _hookers.Remove(msg.Hooker); if (object.ReferenceEquals(_activeHooker, msg.Hooker)) { msg.Hooker.UnhookPanel(); if (_hookers.Count > 0) { var h = _hookers.FirstOrDefault(); ChangeReference(_panel, msg.Hooker.TotalTransformation, h.TotalTransformation); h.HookPanel(_panel); _activeHooker = h; _residualTransform = _panel.Transform.Value.Inverse(); _residualTransformInitialized = true; } else { ChangeReference(_panel, msg.Hooker.TotalTransformation, _sourceTransformation); Children.Add(_panel); _sourceTransformation = null; _activeHooker = null; } } } }
private void OnHookPanel(HookPanelMessage msg) { if (_panel != null) { if (_sourceTransformation == null) { _sourceTransformation = this.GetChainTansform().StaticClone(); } if (_hookers.Count == 0) { Children.Remove(_panel); ChangeReference(_panel, _sourceTransformation, msg.Hooker.TotalTransformation); msg.Hooker.HookPanel(_panel); _activeHooker = msg.Hooker; _residualTransform = _panel.Transform.Value.Inverse(); _residualTransformInitialized = true; } _hookers.Add(msg.Hooker); } }