// The above mentioned solution for Dev10 bug# 908460 needed another supporting change. 
        // The base class for RibbonApplicationMenu viz. MenuBase woudn't wait for the 
        // CloseSubmenuTimer to elapse but instead forcibly closed the first Popup as soon as 
        // the second one was about to show. And this happened when the IsSubmenuOpen property 
        // on the first Popup was being turned off. So in order to counter this behavior, we 
        // now coerce the IsSubenuOpen property for top level RibbonApplicationMenuItems and 
        // RibbonApplicationSplitMenuItems whenever the timer is running and the current 
        // selection has moved to another MenuItem with a submenu.

        private static object CoerceIsSubmenuOpen(DependencyObject d, object baseValue)
        {
            RibbonApplicationSplitMenuItem menuItem = (RibbonApplicationSplitMenuItem)d;
            if (menuItem.Level == RibbonApplicationMenuItemLevel.Top)
            {
                return RibbonHelper.CoerceIsSubmenuOpenForTopLevelItem(menuItem, menuItem.ParentItemsControl, (bool)baseValue);
            }

            return baseValue;
        }