private void ButtonRemoved(ButtonRemoved e) { DynamicActionInfo removedActionInfo; lock (_cacheLock) { removedActionInfo = _dynamicActionInfoList.FirstOrDefaultWithContext(e); if (removedActionInfo == null) { return; } _dynamicActionInfoList.Remove(removedActionInfo); var lastIndex = removedActionInfo.Index; foreach (var dynamicActioninfo in _dynamicActionInfoList) { if (dynamicActioninfo.IsAfter(e)) { if (dynamicActioninfo.Index > lastIndex) { lastIndex = dynamicActioninfo.Index; } dynamicActioninfo.Index--; } } } //we only have to change the one action that changed, as the handler is smart enough to refresh everything else around PublishChangeEventsForChangedActions(removedActionInfo); }
public void RemoveButton(Button button) { if (Buttons.All(b => b.Value != button)) { return; } var hexagonNode = Buttons.First(b => b.Value == button).Key; Buttons.Remove(hexagonNode); ButtonRemoved?.Invoke(this, button); }