void AddMarkers(bool updateActiveStatements) { Debug.Assert(currentStatementMarker == null); Debug.Assert(callReturnMarker == null); bool tooManyFrames; var frames = stackFrameManager.GetFrames(out tooManyFrames); if (frames.Count == 0) { return; } var methodOffset = GetModuleTokenId(frames[0]); if (methodOffset != null) { currentStatementMarker = glyphTextMarkerService.AddMarker( methodOffset.Value.Key, methodOffset.Value.Value, new ImageReference(GetType().Assembly, "CurrentStatement"), ThemeClassificationTypeNameKeys.CurrentStatementMarker, null, classificationTypeCurrentStatement, GlyphTextMarkerServiceZIndexes.CurrentStatement, null, null, textViewFilter); } int selectedFrameNumber = stackFrameManager.SelectedFrameNumber; methodOffset = selectedFrameNumber != 0 && selectedFrameNumber < frames.Count ? GetModuleTokenId(frames[selectedFrameNumber]) : null; if (methodOffset != null) { callReturnMarker = glyphTextMarkerService.AddMarker( methodOffset.Value.Key, methodOffset.Value.Value, new ImageReference(GetType().Assembly, "CallReturn"), ThemeClassificationTypeNameKeys.CallReturnMarker, null, classificationTypeCallReturn, GlyphTextMarkerServiceZIndexes.ReturnStatement, null, null, textViewFilter); } if (updateActiveStatements) { activeStatementService.Value.OnNewActiveStatements(frames); } }
void UpdateMarker(ILCodeBreakpoint ilbp) { RemoveMarker(ilbp); var info = GetBreakpointMarkerInfo(ilbp); var marker = glyphTextMarkerService.AddMarker(ilbp.MethodToken, ilbp.ILOffset, info.ImageReference, info.MarkerTypeName, info.SelectedMarkerTypeName, info.ClassificationType, info.ZIndex, GlyphTextMarkerHelper.GetTag(ilbp), ilCodeBreakpointGlyphTextMarkerHandler, textViewFilter); toMethodMarkers.Add(ilbp, marker); }