Exemple #1
0
 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)));
 }
Exemple #2
0
        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);
                }
            }
        }