private static void OnIsOpenChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
RibbonContextMenu contextMenu = (RibbonContextMenu)d;
if (!(bool)(e.NewValue))
{
if (!contextMenu._ignoreDismissPopupsOnNextClose)
{
UIElement dismissPopupSource = contextMenu.GetDismissPopupSource();
if (CanRaiseDismissPopups(dismissPopupSource))
{
// Raise DismissPopup on owner if can raise and if
// was not asked to ignore.
dismissPopupSource.RaiseEvent(new RibbonDismissPopupEventArgs(RibbonDismissPopupMode.Always));
((Ribbon)(RibbonControlService.GetRibbon(dismissPopupSource))).RestoreFocusOnContextMenuClose();
}
}
else
{
contextMenu.RestoreFocusToRibbon();
contextMenu._ignoreDismissPopupsOnNextClose = false;
}
}
else
{
contextMenu._ignoreDismissPopupsOnNextClose = false;
}
}