1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-13 05:44:11 +02:00

Improved handling of conflict of key chord prefix and one-key command

This commit is contained in:
Brian Fiete 2022-06-21 12:31:38 -07:00
parent 7c00fe87c4
commit dd7986aaa9
2 changed files with 25 additions and 1 deletions

View file

@ -953,7 +953,7 @@ namespace IDE
curCmdMap = (*valuePtr) as CommandMap; curCmdMap = (*valuePtr) as CommandMap;
if (curCmdMap == null) if (curCmdMap == null)
{ {
curCmdMap.FailValues.Add(ideCommand); gApp.OutputLineSmart("ERROR: The same key is bound for '{0}' and as part of a key chord", entry.mCommand);
break; break;
} }
} }

View file

@ -221,6 +221,30 @@ namespace IDE.ui
} }
} }
// Do chord prefix search
for (var propEntries in mPropPage.mPropEntries.Values)
{
var propEntry = propEntries[0];
let keyEntry = (KeyEntry)propEntry.mTarget;
let origKeys = propEntry.mCurValue.Get<List<KeyState>>();
var keys = scope List<KeyState>(origKeys.GetEnumerator());
while (keys.Count > 1)
{
keys.PopBack();
let keyEntryStr = scope String();
KeyState.ToString(keys, keyEntryStr);
keyEntryStr.Append(" ");
CommandContextToString(keyEntry.mContextFlags, keyEntryStr);
if (mappedEntries.TryGet(keyEntryStr, var keyPtr, var valuePtr))
{
let other = valuePtr;
other.mHasConflict = true;
keyEntry.mHasConflict = true;
}
}
}
for (let keyEntryStr in mappedEntries.Keys) for (let keyEntryStr in mappedEntries.Keys)
delete keyEntryStr; delete keyEntryStr;