private static KeyAction Add(string type, Getter <Controller, bool> doOnDown, Setter <Controller, bool> doOnModeChange, bool needScroll) { KeyAction action = new KeyAction(type, doOnDown, doOnModeChange, needScroll); actions.Add(action); return(action); }
public void AddItem(KeyItem item, bool asMain) { if (item.modeKeys != null) { item = new KeyItem(item.keys | item.modeKeys.Value, item.modeKeys, item.action) .SetDoubleClick(item.doubleClick); } _items.Add(item); if (item.keys != Keys.None) { KeyItem prevItem; itemByKeys.TryGetValue(item.keys, out prevItem); if (asMain) { item.next = prevItem; itemByKeys[item.keys] = item; } else { KeyItem lastItem = prevItem; for (; lastItem != null && lastItem.next != null; lastItem = lastItem.next) { ; } if (lastItem != null) { lastItem.next = item; } else { itemByKeys.Add(item.keys, item); } } if (item.modeKeys != null) { RWList <KeyItem> items; modeItemsByKeys.TryGetValue(item.modeKeys.Value, out items); if (items == null) { items = new RWList <KeyItem>(); modeItemsByKeys.Add(item.modeKeys.Value, items); } items.Add(item); } } if (item.doubleClick) { if (asMain) { item.next = doubleClickItem; doubleClickItem = item; } else { KeyItem lastItem = doubleClickItem; for (; lastItem != null && lastItem.next != null; lastItem = lastItem.next) { ; } if (lastItem != null) { lastItem.next = item; } else { doubleClickItem = item; } } } }