bool DoShortcutEntriesConflict(ShortcutEntry shortcutEntry1, ShortcutEntry shortcutEntry2, IContextManager contextManager) { return(contextManager.DoContextsConflict(shortcutEntry1.context, shortcutEntry2.context) && string.Equals(shortcutEntry1.tag, shortcutEntry2.tag) && (shortcutEntry1.StartsWith(shortcutEntry2.combinations) || shortcutEntry2.StartsWith(shortcutEntry1.combinations))); }
public void FindPotentialConflicts(Type context, string tag, IList <KeyCombination> binding, IList <ShortcutEntry> output, IContextManager contextManager) { if (!binding.Any()) { return; } var tempCombinations = new List <KeyCombination>(binding.Count); output.Clear(); List <ShortcutEntry> entries = m_IndexedShortcutEntries[(int)binding[0].keyCode]; if (entries == null || !entries.Any()) { return; } foreach (var shortcutEntry in entries) { if (!contextManager.DoContextsConflict(shortcutEntry.context, context) || !string.Equals(tag, shortcutEntry.tag)) { continue; } bool entryConflicts = false; tempCombinations.Clear(); foreach (var keyCombination in binding) { tempCombinations.Add(keyCombination); if (shortcutEntry.FullyMatches(tempCombinations)) { entryConflicts = true; break; } } if (entryConflicts || shortcutEntry.StartsWith(tempCombinations)) { output.Add(shortcutEntry); } } }