private bool CloseTab(QTabItem closingTab, bool fCritical) { QTabItemBase base3; bool flag2; if(closingTab == null) { return false; } if((!fCritical && closingTab.TabLocked) && QTUtility2.PathExists(closingTab.CurrentPath)) { return false; } int index = this.tabControl1.TabPages.IndexOf(closingTab); if(index == -1) { return false; } this.lstActivatedTabs.Remove(closingTab); AddToHistory(closingTab); bool flag = closingTab == this.CurrentTab; this.tabControl1.TabPages.Remove(closingTab); closingTab.OnClose(); closingTab = null; if(flag) { this.CurrentTab = null; } if(!flag) { this.SyncButtonBarCurrent(0x1003c); goto Label_0249; } int tabCount = this.tabControl1.TabCount; if(tabCount <= 0) { goto Label_0249; } QTabItemBase tabPage = null; switch(QTUtility.ConfigValues[2]) { case 0: if(index != tabCount) { tabPage = this.tabControl1.TabPages[index]; } else { tabPage = this.tabControl1.TabPages[index - 1]; } goto Label_020D; case 1: if(index != 0) { tabPage = this.tabControl1.TabPages[index - 1]; } else { tabPage = this.tabControl1.TabPages[0]; } goto Label_020D; case 2: tabPage = this.tabControl1.TabPages[tabCount - 1]; goto Label_020D; case 3: tabPage = this.tabControl1.TabPages[0]; goto Label_020D; case 4: if(this.lstActivatedTabs.Count <= 0) { tabPage = this.tabControl1.TabPages[0]; goto Label_020D; } base3 = this.lstActivatedTabs[this.lstActivatedTabs.Count - 1]; this.lstActivatedTabs.RemoveAt(this.lstActivatedTabs.Count - 1); flag2 = false; foreach(QTabItem item in this.tabControl1.TabPages) { if(item == base3) { flag2 = true; break; } } break; default: goto Label_020D; } if(flag2) { tabPage = base3; } else { tabPage = this.tabControl1.TabPages[0]; } Label_020D: if(tabPage != null) { this.tabControl1.SelectTab(tabPage); } else { this.tabControl1.SelectTab(0); } this.SyncButtonBarCurrent((tabPage == null) ? 60 : 0x3f); Label_0249: return true; }
private bool CloseTab(QTabItem closingTab, bool fCritical, bool fSkipSync = false) { if(closingTab == null) { return false; } if((!fCritical && closingTab.TabLocked) && QTUtility2.PathExists(closingTab.CurrentPath)) { return false; } int index = tabControl1.TabPages.IndexOf(closingTab); if(index == -1) { return false; } lstActivatedTabs.Remove(closingTab); AddToHistory(closingTab); tabControl1.TabPages.Remove(closingTab); closingTab.OnClose(); if(closingTab != CurrentTab) { if(!fSkipSync) SyncButtonBarCurrent(0x1003c); return true; } CurrentTab = null; int tabCount = tabControl1.TabCount; if(tabCount == 0) return true; QTabItemBase tabPage = null; switch(QTUtility.ConfigValues[2]) { case 0: tabPage = tabControl1.TabPages[index == tabCount ? index - 1: index]; break; case 1: tabPage = tabControl1.TabPages[index == 0 ? 0 : index - 1]; break; case 2: tabPage = tabControl1.TabPages[tabCount - 1]; break; case 3: tabPage = tabControl1.TabPages[0]; break; case 4: if(lstActivatedTabs.Count <= 0) { tabPage = tabControl1.TabPages[0]; break; } QTabItemBase lastTab = lstActivatedTabs[lstActivatedTabs.Count - 1]; lstActivatedTabs.RemoveAt(lstActivatedTabs.Count - 1); tabPage = tabControl1.TabPages.Contains(lastTab) ? lastTab : tabControl1.TabPages[0]; break; } if(tabPage != null) { tabControl1.SelectTab(tabPage); } else { tabControl1.SelectTab(0); } if(!fSkipSync) SyncButtonBarCurrent((tabPage == null) ? 60 : 0x3f); return true; }
private bool CloseTab(QTabItem closingTab, bool fCritical, bool fSkipSync = false) { if(closingTab == null) { return false; } if((!fCritical && closingTab.TabLocked) && QTUtility2.PathExists(closingTab.CurrentPath)) { return false; } int index = tabControl1.TabPages.IndexOf(closingTab); if(index == -1) { return false; } lstActivatedTabs.Remove(closingTab); AddToHistory(closingTab); tabControl1.TabPages.Remove(closingTab); closingTab.OnClose(); if(closingTab != CurrentTab) { if(!fSkipSync) { TryCallButtonBar(bbar => bbar.RefreshButtons()); QTabItem.CheckSubTexts(tabControl1); } return true; } CurrentTab = null; int tabCount = tabControl1.TabCount; if(tabCount == 0) return true; QTabItem tabPage = null; switch(Config.Tabs.NextAfterClosed) { case TabPos.Right: tabPage = tabControl1.TabPages[index == tabCount ? index - 1: index]; break; case TabPos.Left: tabPage = tabControl1.TabPages[index == 0 ? 0 : index - 1]; break; case TabPos.Rightmost: tabPage = tabControl1.TabPages[tabCount - 1]; break; case TabPos.Leftmost: tabPage = tabControl1.TabPages[0]; break; case TabPos.LastActive: if(lstActivatedTabs.Count > 0) { QTabItem lastTab = lstActivatedTabs[lstActivatedTabs.Count - 1]; lstActivatedTabs.RemoveAt(lstActivatedTabs.Count - 1); tabPage = tabControl1.TabPages.Contains(lastTab) ? lastTab : tabControl1.TabPages[0]; } else { tabPage = tabControl1.TabPages[0]; } break; } if(tabPage != null) { tabControl1.SelectTab(tabPage); } else { tabControl1.SelectTab(0); } if(!fSkipSync) { TryCallButtonBar(bbar => bbar.RefreshButtons()); } return true; }