private int RemoveDropDownBar() { var cpc = (IConnectionPointContainer)_window; if (cpc != null) { IConnectionPoint cp; cpc.FindConnectionPoint(typeof(IVsCodeWindowEvents).GUID, out cp); if (cp != null) { try { cp.Unadvise(_cookieVsCodeWindowEvents); } catch (ArgumentException) // ArgException, invalid cookie. At this point, not much we can do. { } } } if (_client != null) { IVsDropdownBarManager manager = (IVsDropdownBarManager)_window; _client.Unregister(); // A buffer may have multiple DropDownBarClients, given one may open multiple CodeWindows // over a single buffer using Window/New Window List <DropDownBarClient> listDropDownBarClient; if (_textBuffer.Properties.TryGetProperty(typeof(DropDownBarClient), out listDropDownBarClient) && listDropDownBarClient != null) { listDropDownBarClient.Remove(_client); if (listDropDownBarClient.Count == 0) { _textBuffer.Properties.RemoveProperty(typeof(DropDownBarClient)); } int instancesOpen = 0; if (_textBuffer.Properties.TryGetProperty <int>("InstancesOpen", out instancesOpen)) { instancesOpen--; _textBuffer.Properties["InstancesOpen"] = instancesOpen; } } _client = null; return(manager.RemoveDropdownBar()); } return(VSConstants.S_OK); }
private int RemoveDropDownBar() { var cpc = (IConnectionPointContainer)_window; if (cpc != null) { IConnectionPoint cp; cpc.FindConnectionPoint(typeof(IVsCodeWindowEvents).GUID, out cp); if (cp != null) { cp.Unadvise(_cookieVsCodeWindowEvents); } } if (_client != null) { IVsDropdownBarManager manager = (IVsDropdownBarManager)_window; _client.Unregister(); // A buffer may have multiple DropDownBarClients, given one may open multiple CodeWindows // over a single buffer using Window/New Window List <DropDownBarClient> listDropDownBarClient; if (_textBuffer.Properties.TryGetProperty(typeof(DropDownBarClient), out listDropDownBarClient) && listDropDownBarClient != null) { listDropDownBarClient.Remove(_client); if (listDropDownBarClient.Count == 0) { _textBuffer.Properties.RemoveProperty(typeof(DropDownBarClient)); } int instancesOpen = 0; if (_textBuffer.Properties.TryGetProperty <int>("InstancesOpen", out instancesOpen)) { instancesOpen--; _textBuffer.Properties["InstancesOpen"] = instancesOpen; } if (instancesOpen == 0) { string filePath = _textBuffer.GetFilePath(); //// remove the file parser manager from the buffer (hang onto it for unregistration) //var delFpm = VSGeneroPackage.Instance.RemoveBufferFileParserManager(_textBuffer); //if (delFpm.PrimarySibling == null) //{ // // remove the buffer from the global buffer dictionary // if (VSGeneroPackage.BufferDictionary.ContainsKey(filePath)) // { // VSGeneroPackage.BufferDictionary.Remove(filePath); // } // VSGeneroPackage.Instance.ProgramContentsManager.Programs.Remove(_textBuffer.GetProgram()); // IEnumerable<string> programFilenames = (VSGeneroPackage.Instance.CurrentProgram4GLFileProvider == null) ? // VSGenero.EditorExtensions.EditorExtensions.GetProgramFilenames(filePath) : // VSGeneroPackage.Instance.CurrentProgram4GLFileProvider.GetProgramFilenames(filePath); // var filenameList = programFilenames.ToList(); // if(filenameList.Count > 0) // { // foreach(var filename in filenameList) // { // TextBufferOpenStatus bufferStatus; // if(VSGeneroPackage.BufferDictionary.TryGetValue(filename, out bufferStatus)) // { // if (!bufferStatus.IsOpen) // { // VSGeneroPackage.Instance.RemoveBufferFileParserManager(bufferStatus.Buffer); // VSGeneroPackage.BufferDictionary.Remove(filename); // } // } // } // } //} //else //{ // if (!VSGeneroPackage.BufferDictionary.ContainsKey(delFpm.PrimarySibling)) // { // VSGeneroPackage.BufferDictionary.Remove(filePath); // } // else if (VSGeneroPackage.BufferDictionary.ContainsKey(filePath)) // { // VSGeneroPackage.BufferDictionary[filePath].IsOpen = false; // } //} //Genero4GLOutliner outliner; //if (_textBuffer.Properties.TryGetProperty<Genero4GLOutliner>(typeof(Genero4GLOutliner), out outliner)) //{ // outliner.Unregister(delFpm); // _textBuffer.Properties.RemoveProperty(typeof(Genero4GLOutliner)); //} //GeneroClassifier classifier; //if (_textBuffer.Properties.TryGetProperty<GeneroClassifier>(typeof(GeneroClassifier), out classifier)) //{ // classifier.Unregister(); // _textBuffer.Properties.RemoveProperty(typeof(GeneroClassifier)); //} //GeneroLineEndingsListener lineEndingsListener; //if (_textBuffer.Properties.TryGetProperty<GeneroLineEndingsListener>(typeof(GeneroLineEndingsListener), out lineEndingsListener)) //{ // lineEndingsListener.Unregister(); // _textBuffer.Properties.RemoveProperty(typeof(GeneroLineEndingsListener)); //} //SignatureHelpSource sigHelpSource; //if (_textBuffer.Properties.TryGetProperty<SignatureHelpSource>(typeof(SignatureHelpSource), out sigHelpSource)) //{ // sigHelpSource.Unregister(); // _textBuffer.Properties.RemoveProperty(typeof(SignatureHelpSource)); //} } } _client = null; return(manager.RemoveDropdownBar()); } return(VSConstants.S_OK); }