Exemple #1
0
            public FrameListener(VisualStudioActiveDocumentTracker service, IVsWindowFrame frame)
            {
                _documentTracker = service;
                _documentTracker.AssertIsForeground();

                this.Frame = frame;

                ((IVsWindowFrame2)frame).Advise(this, out _frameEventsCookie);

                if (
                    ErrorHandler.Succeeded(
                        frame.GetProperty((int)__VSFPROPID.VSFPROPID_DocData, out var docData)
                        )
                    )
                {
                    if (docData is IVsTextBuffer bufferAdapter)
                    {
                        _textBuffer =
                            _documentTracker._editorAdaptersFactoryService.GetDocumentBuffer(
                                bufferAdapter
                                );

                        if (
                            _textBuffer != null &&
                            !_textBuffer.ContentType.IsOfType(ContentTypeNames.RoslynContentType)
                            )
                        {
                            _textBuffer.Changed += NonRoslynTextBuffer_Changed;
                        }
                    }
                }
            }
Exemple #2
0
            private int Disconnect()
            {
                _documentTracker.AssertIsForeground();
                _documentTracker.RemoveFrame(this);

                if (_textBuffer != null)
                {
                    _textBuffer.Changed -= NonRoslynTextBuffer_Changed;
                }

                if (_frameEventsCookie != VSConstants.VSCOOKIE_NIL)
                {
                    return(((IVsWindowFrame2)Frame).Unadvise(_frameEventsCookie));
                }
                else
                {
                    return(VSConstants.S_OK);
                }
            }