private void UpdateVisible(Control c)
{
if (c != null)
{
// Start with the visible state of the group element
bool visible = _ribbonDomainUpDown.Visible;
// If we have an associated designer setup...
if (!_ribbon.InDesignHelperMode && (_ribbonDomainUpDown.DomainUpDownDesigner != null))
{
// And we are not using the design helpers, then use the design specified value
visible = _ribbonDomainUpDown.DomainUpDownDesigner.DesignVisible;
}
if (visible)
{
// Only visible if on the currently selected page
if ((_ribbonDomainUpDown.RibbonTab == null) ||
(_ribbon.SelectedTab != _ribbonDomainUpDown.RibbonTab))
visible = false;
else
{
// Check the owning group is visible
if ((_ribbonDomainUpDown.RibbonContainer != null) &&
(_ribbonDomainUpDown.RibbonContainer.RibbonGroup != null) &&
!_ribbonDomainUpDown.RibbonContainer.RibbonGroup.Visible &&
!_ribbon.InDesignMode)
visible = false;
else
{
// Check that the group is not collapsed
if ((_ribbonDomainUpDown.RibbonContainer.RibbonGroup.IsCollapsed) &&
((_ribbon.GetControllerControl(_ribbonDomainUpDown.DomainUpDown) is KryptonRibbon) ||
(_ribbon.GetControllerControl(_ribbonDomainUpDown.DomainUpDown) is VisualPopupMinimized)))
visible = false;
else
{
// Check that the hierarchy of containers are all visible
KryptonRibbonGroupContainer container = _ribbonDomainUpDown.RibbonContainer;
// Keep going until we have searched the entire parent chain of containers
while (container != null)
{
// If any parent container is not visible, then we are not visible
if (!container.Visible)
{
visible = false;
break;
}
// Move up a level
container = container.RibbonContainer;
}
}
}
}
}
c.Visible = visible;
}
}