示例#1
0
        public GlyphMargin(
            IWpfTextViewHost wpfTextViewHost,
            IGlyphFactory <TGlyphTag> glyphFactory,
            Func <Grid> gridFactory,
            ITagAggregator <TGlyphTag> tagAggregator,
            IEditorFormatMap editorFormatMap,
            Func <ITextBuffer, bool> isMarginVisible,
            string marginPropertiesName, string marginName, bool handleZoom = true, double marginWidth = 17.0)
        {
            textView             = wpfTextViewHost.TextView;
            this.tagAggregator   = tagAggregator;
            this.isMarginVisible = isMarginVisible;
            this.marginName      = marginName;
            this.handleZoom      = handleZoom;
            this.marginWidth     = marginWidth;

            marginVisual       = gridFactory();
            marginVisual.Width = marginWidth;

            visualManager = new GlyphMarginVisualManager <TGlyphTag>(textView, glyphFactory, marginVisual,
                                                                     this, editorFormatMap, marginPropertiesName);

            // Do on Loaded to give diff view a chance to initialize.
            marginVisual.Loaded += OnLoaded;
        }
示例#2
0
        public GlyphMargin(
            IWpfTextView textView,
            IGlyphFactory <TGlyphTag> glyphFactory,
            Grid marginGrid,
            IViewTagAggregatorFactoryService tagAggregatorFactory,
            IEditorFormatMap editorFormatMap,
            string marginPropertiesName)
        {
            this.textView             = textView;
            this.marginGrid           = marginGrid;
            this.tagAggregatorFactory = tagAggregatorFactory;
            visualManager             = new GlyphMarginVisualManager <TGlyphTag>(textView, glyphFactory, marginGrid, editorFormatMap, marginPropertiesName);

            // Initialize when first visible
            visibleSubscription = marginGrid.WhenAnyValue(x => x.IsVisible).Distinct().Where(x => x).Subscribe(_ => Initialize());
        }