/// <summary>
/// Discover the preferred size of the element.
/// </summary>
/// <param name="context">Layout context.</param>
public override Size GetPreferredSize(ViewLayoutContext context)
{
// Sync to represent the current ribbon QAT buttons
SyncChildren(false);
Size preferredSize = Size.Empty;
// Find total width and maximum height across all child elements
for (int i = 0; i < Count; i++)
{
ViewBase child = this[i];
// Only interested in visible items that are not the extra button
if (child != _extraButton)
{
// Cast child to correct type
ViewDrawRibbonQATButton view = (ViewDrawRibbonQATButton)child;
// If the quick access toolbar button wants to be visible
if (view.QATButton.GetVisible() || Ribbon.InDesignHelperMode)
{
// Cache preferred size of the child
Size childSize = child.GetPreferredSize(context);
// Only need extra processing for children that have some width
if (childSize.Width > 0)
{
// Always add on to the width
preferredSize.Width += childSize.Width;
// Find maximum height encountered
preferredSize.Height = Math.Max(preferredSize.Height, childSize.Height);
}
}
}
}
if (_extraButton != null)
{
// Cache preferred size of the child
Size childSize = _extraButton.GetPreferredSize(context);
// Only need extra processing for children that have some width
if (childSize.Width > 0)
{
// Always add on to the width
preferredSize.Width += childSize.Width;
// Find maximum height encountered
preferredSize.Height = Math.Max(preferredSize.Height, childSize.Height);
}
}
return(preferredSize);
}