private bool SetFrame(float left, float top, float right, float bottom, bool independent) { bool changed = false; if (layoutPositionData.Left != left || layoutPositionData.Right != right || layoutPositionData.Top != top || layoutPositionData.Bottom != bottom) { changed = true; // Set condition to layout changed as currently unspecified. Add, Remove would have specified a condition. if (ConditionForAnimation.Equals(TransitionCondition.Unspecified)) { ConditionForAnimation = TransitionCondition.LayoutChanged; } // Store new layout position data layoutPositionData = new LayoutData(this, ConditionForAnimation, left, top, right, bottom); NUILog.Debug("LayoutItem FramePositionData View:" + layoutPositionData.Item.Owner.Name + " left:" + layoutPositionData.Left + " top:" + layoutPositionData.Top + " right:" + layoutPositionData.Right + " bottom:" + layoutPositionData.Bottom); View ownerView = Owner.GetParent() as View; if (ownerView?.Layout?.LayoutWithTransition ?? false) { NUIApplication.GetDefaultWindow().LayoutController.AddTransitionDataEntry(layoutPositionData); } else { if (independent) { // If height or width specification is not explicitly defined, // the size of the owner view must be reset even the ExcludeLayouting is true. if (Owner.HeightSpecification < 0 || Owner.WidthSpecification < 0) { Owner.SetSize(right - left, bottom - top); } } else { Owner.SetSize(right - left, bottom - top); Owner.SetPosition(left, top); } } // Reset condition for animation ready for next transition when required. ConditionForAnimation = TransitionCondition.Unspecified; } return(changed); }
private bool SetFrame(float left, float top, float right, float bottom) { bool changed = false; if (_layoutPositionData.Left != left || _layoutPositionData.Right != right || _layoutPositionData.Top != top || _layoutPositionData.Bottom != bottom) { changed = true; float oldWidth = _layoutPositionData.Right - _layoutPositionData.Left; float oldHeight = _layoutPositionData.Bottom - _layoutPositionData.Top; float newWidth = right - left; float newHeight = bottom - top; bool sizeChanged = (newWidth != oldWidth) || (newHeight != oldHeight); // Set condition to layout changed as currently unspecified. Add, Remove would have specified a condition. if (ConditionForAnimation.Equals(TransitionCondition.Unspecified)) { ConditionForAnimation = TransitionCondition.LayoutChanged; } // Store new layout position data _layoutPositionData = new LayoutData(this, ConditionForAnimation, left, top, right, bottom); Debug.WriteLineIf(LayoutDebugFrameData, "LayoutItem FramePositionData View:" + _layoutPositionData.Item.Owner.Name + " left:" + _layoutPositionData.Left + " top:" + _layoutPositionData.Top + " right:" + _layoutPositionData.Right + " bottom:" + _layoutPositionData.Bottom); if (Owner.Parent != null && Owner.Parent.Layout != null && Owner.Parent.Layout.LayoutWithTransition) { Window.Instance.LayoutController.AddTransitionDataEntry(_layoutPositionData); } else { Owner.Size = new Size(right - left, bottom - top, Owner.Position.Z); if (SetPositionByLayout) { Owner.Position = new Position(left, top, Owner.Position.Z); } } // Reset condition for animation ready for next transition when required. ConditionForAnimation = TransitionCondition.Unspecified; } return(changed); }
/// <summary> /// Initialize the layout and allow derived classes to also perform any operations /// </summary> /// <param name="owner">Owner of this Layout.</param> internal void AttachToOwner(View owner) { // Assign the layout owner. Owner = owner; OnAttachedToOwner(); // Add layout to parent layout if a layout container View parent = Owner.GetParent() as View; (parent?.Layout as LayoutGroup)?.Add(this); // If Add or ChangeOnAdd then do not update condition if (ConditionForAnimation.Equals(TransitionCondition.Unspecified)) { ConditionForAnimation = TransitionCondition.LayoutChanged; } }
private bool SetFrame(float left, float top, float right, float bottom, bool independent) { bool changed = false; if (_layoutPositionData.Left != left || _layoutPositionData.Right != right || _layoutPositionData.Top != top || _layoutPositionData.Bottom != bottom) { changed = true; float oldWidth = _layoutPositionData.Right - _layoutPositionData.Left; float oldHeight = _layoutPositionData.Bottom - _layoutPositionData.Top; float newWidth = right - left; float newHeight = bottom - top; bool sizeChanged = (newWidth != oldWidth) || (newHeight != oldHeight); // Set condition to layout changed as currently unspecified. Add, Remove would have specified a condition. if (ConditionForAnimation.Equals(TransitionCondition.Unspecified)) { ConditionForAnimation = TransitionCondition.LayoutChanged; } // Store new layout position data _layoutPositionData = new LayoutData(this, ConditionForAnimation, left, top, right, bottom); Debug.WriteLineIf(LayoutDebugFrameData, "LayoutItem FramePositionData View:" + _layoutPositionData.Item.Owner.Name + " left:" + _layoutPositionData.Left + " top:" + _layoutPositionData.Top + " right:" + _layoutPositionData.Right + " bottom:" + _layoutPositionData.Bottom); Container onwerContainer = Owner.GetParent(); View onwerView = onwerContainer is Layer ? new View(Layer.getCPtr(onwerContainer).Handle, false) : onwerContainer as View; if (onwerView != null && onwerView.Layout != null && onwerView.Layout.LayoutWithTransition) { NUIApplication.GetDefaultWindow().LayoutController.AddTransitionDataEntry(_layoutPositionData); } else { if (Owner.Position != null) { if (independent) { // If height or width specification is not explicitly defined, // the size of the owner view must be reset even the ExcludeLayouting is true. if (Owner.HeightSpecification < 0 || Owner.WidthSpecification < 0) { Owner.SetSize(right - left, bottom - top); } } else { Owner.SetSize(right - left, bottom - top); Owner.SetPosition(left, top); } } } // Reset condition for animation ready for next transition when required. ConditionForAnimation = TransitionCondition.Unspecified; } return(changed); }