/// <summary> /// Discover the preferred size of the element. /// </summary> /// <param name="context">Layout context.</param> public override Size GetPreferredSize(ViewLayoutContext context) { Size preferredSize = Size.Empty; // Ensure the control has the correct parent UpdateParent(context.Control); // If there is a richtextbox associated then ask for its requested size if (LastRichTextBox != null) { if (ActualVisible(LastRichTextBox)) { preferredSize = LastRichTextBox.GetPreferredSize(context.DisplayRectangle.Size); // Add two pixels, one for the left and right edges that will be padded preferredSize.Width += 2; } } else { preferredSize.Width = NULL_CONTROL_WIDTH; } if (_currentSize == GroupItemSize.Large) { preferredSize.Height = _ribbon.CalculatedValues.GroupTripleHeight; } else { preferredSize.Height = _ribbon.CalculatedValues.GroupLineHeight; } return(preferredSize); }
/// <summary> /// Perform a layout of the elements. /// </summary> /// <param name="context">Layout context.</param> public override void Layout(ViewLayoutContext context) { Debug.Assert(context != null); // We take on all the available display area ClientRectangle = context.DisplayRectangle; // Are we allowed to change the layout of controls? if (!context.ViewManager.DoNotLayoutControls) { // If we have an actual control, position it with a pixel padding all around LastRichTextBox?.SetBounds(ClientLocation.X + 1, ClientLocation.Y + 1, ClientWidth - 2, ClientHeight - 2); } // Let child elements layout in given space base.Layout(context); }