// 创建新标签 地址 索引 是否锁定 是否选中 public bool CreateTab(Address address, int index, bool fLocked, bool fSelect) { using (IDLWrapper wrapper = new IDLWrapper(address)) { address.ITEMIDLIST = wrapper.IDL; address.Path = wrapper.Path; } if ((address.ITEMIDLIST == null) || (address.ITEMIDLIST.Length <= 0)) { return(false); } QTabItem tab = new QTabItem(QTUtility2.MakePathDisplayText(address.Path, false), address.Path, tabBar.tabControl1); tab.NavigatedTo(address.Path, address.ITEMIDLIST, -1, false); tab.ToolTipText = QTUtility2.MakePathDisplayText(address.Path, true); tab.TabLocked = fLocked; if (index < 0) { tabBar.AddInsertTab(tab); } else { if (index > tabBar.tabControl1.TabCount) { index = tabBar.tabControl1.TabCount; } tabBar.tabControl1.TabPages.Insert(index, tab); } if (fSelect) { tabBar.tabControl1.SelectTab(tab); } return(true); }
public QTabItem Clone(bool fAll) { QTabItem item = new QTabItem(base.Text, this.currentPath, base.Owner); item.TabBounds = base.TabBounds; item.Comment = base.Comment; item.currentIDL = this.currentIDL; item.ToolTipText = base.ToolTipText; item.tooltipText2 = this.tooltipText2; if (fAll) { item.tabLocked = base.tabLocked; } LogData[] array = this.stckHistoryForward.ToArray(); LogData[] dataArray2 = this.stckHistoryBackward.ToArray(); Array.Reverse(array); Array.Reverse(dataArray2); item.stckHistoryForward = new Stack <LogData>(array); item.stckHistoryBackward = new Stack <LogData>(dataArray2); item.dicFocusedItemName = new Dictionary <string, string>(this.dicFocusedItemName); item.lstHistoryBranches = new List <LogData>(this.lstHistoryBranches.ToArray()); Dictionary <string, Address[]> dictionary = new Dictionary <string, Address[]>(); foreach (string str in this.dicSelectdItems.Keys) { dictionary.Add(str, this.dicSelectdItems[str]); } item.dicSelectdItems = dictionary; return(item); }
public QTabItem Clone(bool fAll = false) { QTabItem item = new QTabItem(Text, currentPath, Owner); item.TabBounds = TabBounds; item.Comment = Comment; item.currentIDL = currentIDL; item.ToolTipText = ToolTipText; item.tooltipText2 = tooltipText2; if (fAll) { item.tabLocked = tabLocked; } LogData[] array = stckHistoryForward.ToArray(); LogData[] dataArray2 = stckHistoryBackward.ToArray(); Array.Reverse(array); Array.Reverse(dataArray2); item.stckHistoryForward = new Stack <LogData>(array); item.stckHistoryBackward = new Stack <LogData>(dataArray2); item.dicFocusedItemName = new Dictionary <string, string>(dicFocusedItemName); item.lstHistoryBranches = new List <LogData>(lstHistoryBranches.ToArray()); Dictionary <string, Address[]> dictionary = dicSelectdItems.Keys .ToDictionary(str => str, str => dicSelectdItems[str]); item.dicSelectdItems = dictionary; return(item); }
public QTabItem Clone(bool fAll = false) { QTabItem item = new QTabItem(Text, currentPath, Owner) { TabBounds = TabBounds, Comment = Comment, CurrentIDL = CurrentIDL, ToolTipText = ToolTipText, shellToolTip = shellToolTip, tabLocked = fAll && tabLocked, stckHistoryForward = new Stack <LogData>(stckHistoryForward.Reverse()), stckHistoryBackward = new Stack <LogData>(stckHistoryBackward.Reverse()), dicFocusedItemName = new Dictionary <string, string>(dicFocusedItemName), Branches = new List <LogData>(Branches.ToArray()), dicSelectedItems = dicSelectedItems.Keys .ToDictionary(str => str, str => dicSelectedItems[str]) }; return(item); }
public TabWrapper(QTabItem tab, QTTabBarClass tabBar) { this.tab = tab; this.tabBar = tabBar; this.tab.Closed += tab_Closed; }
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 QTabItem CloneTabButton(QTabItem tab, string optionURL, bool fSelect, int index) { NowTabCloned = fSelect; QTabItem item = tab.Clone(); if(index < 0) { AddInsertTab(item); } else if((-1 < index) && (index < (tabControl1.TabCount + 1))) { tabControl1.TabPages.Insert(index, item); } else { AddInsertTab(item); } if(optionURL != null) { using(IDLWrapper wrapper = new IDLWrapper(optionURL)) { item.NavigatedTo(optionURL, wrapper.IDL, -1); } } if(fSelect) { tabControl1.SelectTab(item); } else { item.RefreshRectangle(); tabControl1.Refresh(); } return item; }
public override int TranslateAcceleratorIO(ref MSG msg) { if(msg.message == WM.KEYDOWN) { Keys wParam = (Keys)((int)((long)msg.wParam)); bool flag = (((int)((long)msg.lParam)) & 0x40000000) != 0; switch(wParam) { case Keys.Delete: { if(!tabControl1.Focused || ((subDirTip_Tab != null) && subDirTip_Tab.MenuIsShowing)) { break; } int focusedTabIndex = tabControl1.GetFocusedTabIndex(); if((-1 < focusedTabIndex) && (focusedTabIndex < tabControl1.TabCount)) { bool flag3 = focusedTabIndex == (tabControl1.TabCount - 1); if(CloseTab((QTabItem)tabControl1.TabPages[focusedTabIndex]) && flag3) { tabControl1.FocusNextTab(true, false, false); } } return 0; } case Keys.Apps: if(!flag) { int index = tabControl1.GetFocusedTabIndex(); if((-1 >= index) || (index >= tabControl1.TabCount)) { break; } ContextMenuedTab = (QTabItem)tabControl1.TabPages[index]; Rectangle tabRect = tabControl1.GetTabRect(index, true); contextMenuTab.Show(PointToScreen(new Point(tabRect.Right + 10, tabRect.Bottom - 10))); } return 0; case Keys.F6: case Keys.Tab: case Keys.Left: case Keys.Right: { if(!tabControl1.Focused || ((subDirTip_Tab != null) && subDirTip_Tab.MenuIsShowing)) { break; } bool fBack = (ModifierKeys == Keys.Shift) || (wParam == Keys.Left); if(!tabControl1.FocusNextTab(fBack, false, false)) { break; } return 0; } case Keys.Back: return 0; case Keys.Return: case Keys.Space: if(!flag && !tabControl1.SelectFocusedTab()) { break; } listView.SetFocus(); return 0; case Keys.Escape: if(tabControl1.Focused && ((subDirTip_Tab == null) || !subDirTip_Tab.MenuIsShowing)) { listView.SetFocus(); } break; case Keys.End: case Keys.Home: if((!tabControl1.Focused || ((subDirTip_Tab != null) && subDirTip_Tab.MenuIsShowing)) || !tabControl1.FocusNextTab(wParam == Keys.Home, false, true)) { break; } return 0; case Keys.Up: case Keys.Down: if(((!QTUtility.CheckConfig(Settings.ShowSubDirTipOnTab) || !tabControl1.Focused) || ((subDirTip_Tab != null) && subDirTip_Tab.MenuIsShowing)) || (!flag && !tabControl1.PerformFocusedFolderIconClick(wParam == Keys.Up))) { break; } return 0; } } return base.TranslateAcceleratorIO(ref msg); }
private void tabControl1_MouseUp(object sender, MouseEventArgs e) { if(NowTabDragging && (e.Button == MouseButtons.Left)) { QTabItem tabMouseOn = (QTabItem)tabControl1.GetTabMouseOn(); Keys modifierKeys = ModifierKeys; if(((tabMouseOn == null) && (DraggingTab != null)) && ((modifierKeys == Keys.Control) || (modifierKeys == (Keys.Control | Keys.Shift)))) { bool flag = false; Point pt = tabControl1.PointToScreen(e.Location); if(!QTUtility.IsXP) { RECT rect; PInvoke.GetWindowRect(ReBarHandle, out rect); flag = PInvoke.PtInRect(ref rect, pt); } else { RECT rect2; IntPtr ptr; if(QTUtility.instanceManager.TryGetButtonBarHandle(ExplorerHandle, out ptr) && PInvoke.IsWindowVisible(ptr)) { PInvoke.GetWindowRect(ptr, out rect2); if(PInvoke.PtInRect(ref rect2, pt)) { flag = true; } } PInvoke.GetWindowRect(Handle, out rect2); if(PInvoke.PtInRect(ref rect2, pt)) { flag = true; } } if(flag) { CloneTabButton(DraggingTab, null, false, tabControl1.TabCount); } } else if(((tabMouseOn != null) && (tabMouseOn == DraggingTab)) && ((modifierKeys == Keys.Control) && (DraggingDestRect == Rectangle.Empty))) { DraggingTab.TabLocked = !DraggingTab.TabLocked; } NowTabDragging = false; DraggingTab = null; DraggingDestRect = Rectangle.Empty; SyncButtonBarCurrent(12); } else if((e.Button == MouseButtons.Middle) && !Explorer.Busy) { DraggingTab = null; NowTabDragging = false; QTabItem clickedTab = (QTabItem)tabControl1.GetTabMouseOn(); if((clickedTab != null) && ((ModifierKeys & Keys.Control) != Keys.Control)) { HandleTabClickAction(clickedTab, true); } } Cursor = Cursors.Default; }
private static void AddToHistory(QTabItem closingTab) { string currentPath = closingTab.CurrentPath; if((!QTUtility.CheckConfig(Settings.NoHistory) && !string.IsNullOrEmpty(currentPath)) && !IsSearchResultFolder(currentPath)) { if(QTUtility2.IsShellPathButNotFileSystem(currentPath) && (currentPath.IndexOf("???") == -1)) { currentPath = currentPath + "???" + closingTab.GetLogHash(true, 0); } QTUtility.ClosedTabHistoryList.Add(currentPath); SyncButtonBarBroadCast(2); } }
private void AddStartUpTabs(string openingGRP, string openingPath) { if(ModifierKeys == Keys.Shift || QTUtility.InstancesCount != 1) return; if(QTUtility.StartUpGroupList.Count > 0) { bool flag = QTUtility.CheckConfig(Settings.DontOpenSame); foreach(string str in QTUtility.StartUpGroupList) { string str2; if((openingGRP != str) && QTUtility.GroupPathsDic.TryGetValue(str, out str2)) { if(QTUtility.StartUpGroupNameNowOpening == str) { QTUtility.StartUpGroupNameNowOpening = string.Empty; } else { foreach(string str3 in str2.Split(QTUtility.SEPARATOR_CHAR)) { if(flag) { if(str3.PathEquals(openingPath)) { tabControl1.TabPages.Relocate(0, tabControl1.TabCount - 1); continue; } if(tabControl1.TabPages.Cast<QTabItem>().Any(item => str3.PathEquals(item.CurrentPath))) { continue; } } using(IDLWrapper wrapper = new IDLWrapper(str3)) { if(wrapper.Available) { QTabItem tabPage = new QTabItem(QTUtility2.MakePathDisplayText(str3, false), str3, tabControl1); tabPage.NavigatedTo(str3, wrapper.IDL, -1); tabPage.ToolTipText = QTUtility2.MakePathDisplayText(str3, true); tabPage.UnderLine = true; tabControl1.TabPages.Add(tabPage); } } } } } } } if(QTUtility.CheckConfig(Settings.RestoreLockedTabs)) { RestoreTabsOnInitialize(1, openingPath); } else if(QTUtility.CheckConfig(Settings.RestoreTabs) || fIsFirstLoad) { RestoreTabsOnInitialize(0, openingPath); } }
private void Explorer_NavigateComplete2(object pDisp, ref object URL) { string path = (string)URL; lastCompletedBrowseObjectIDL = lastAttemptedBrowseObjectIDL; if(!IsShown) { DoFirstNavigation(false, path); } if(fNowQuitting) { Explorer.Quit(); } else { int hash = -1; bool flag = IsSpecialFolderNeedsToTravel(path); bool flag2 = QTUtility2.IsShellPathButNotFileSystem(path); bool flag3 = QTUtility2.IsShellPathButNotFileSystem(CurrentTab.CurrentPath); // If we're navigating on a locked tab, we simulate opening the target folder // in a new tab. First we clone the tab at the old address and lock it. Then // we move the current tab to the "new tab" position and unlock it. if(!flag2 && !flag3 && !NavigatedByCode && CurrentTab.TabLocked) { int pos = tabControl1.SelectedIndex; tabControl1.SetRedraw(false); QTabItem item = CloneTabButton(CurrentTab, null, false, pos); item.TabLocked = true; CurrentTab.TabLocked = false; pos++; int max = tabControl1.TabPages.Count - 1; switch(QTUtility.ConfigValues[1]) { case 0: if(pos != max) { tabControl1.TabPages.Relocate(pos, max); } break; case 1: tabControl1.TabPages.Relocate(pos, 0); break; case 3: tabControl1.TabPages.Relocate(pos, pos - 1); break; } tabControl1.SetRedraw(true); lstActivatedTabs.Remove(CurrentTab); lstActivatedTabs.Add(item); lstActivatedTabs.Add(CurrentTab); if(lstActivatedTabs.Count > 15) { lstActivatedTabs.RemoveAt(0); } } if(!NavigatedByCode && flag) { hash = DateTime.Now.GetHashCode(); LogEntryDic[hash] = GetCurrentLogEntry(); } ClearTravelLogs(); try { tabControl1.SetRedraw(false); if(fNowTravelByTree) { using(IDLWrapper wrapper = GetCurrentPIDL()) { QTabItem tabPage = CreateNewTab(wrapper); tabControl1.SelectTabDirectly(tabPage); CurrentTab = tabPage; } } if(tabControl1.AutoSubText && !fNavigatedByTabSelection) { CurrentTab.Comment = string.Empty; } CurrentAddress = path; CurrentTab.Text = Explorer.LocationName; CurrentTab.CurrentIDL = null; CurrentTab.TooltipText2 = null; byte[] idl; using(IDLWrapper wrapper2 = GetCurrentPIDL()) { CurrentTab.CurrentIDL = idl = wrapper2.IDL; if(flag) { if((!NavigatedByCode && (idl != null)) && (idl.Length > 0)) { path = path + "*?*?*" + hash; QTUtility.ITEMIDLIST_Dic_Session[path] = idl; CurrentTab.CurrentPath = CurrentAddress = path; } } else if((flag2 && wrapper2.Available) && !CurrentTab.CurrentPath.Contains("???")) { string str2; int num2; if(IDLWrapper.GetIDLHash(wrapper2.PIDL, out num2, out str2)) { hash = num2; CurrentTab.CurrentPath = CurrentAddress = path = str2; } else if((idl != null) && (idl.Length > 0)) { hash = num2; path = path + "???" + hash; IDLWrapper.AddCache(path, idl); CurrentTab.CurrentPath = CurrentAddress = path; } } if(!NavigatedByCode) { CurrentTab.NavigatedTo(CurrentAddress, idl, hash); } } SyncTravelState(); if(QTUtility.IsXP) { if(CurrentAddress.StartsWith(QTUtility.PATH_SEARCHFOLDER)) { ShowSearchBar(true); } else if(QTUtility.fExplorerPrevented || QTUtility.fRestoreFolderTree) { if(!QTUtility.CheckConfig(Settings.NoNewWndFolderTree) || QTUtility.fRestoreFolderTree) { ShowFolderTree(true); } QTUtility.fExplorerPrevented = QTUtility.fRestoreFolderTree = false; } } if(CurrentAddress.StartsWith("::")) { CurrentTab.ToolTipText = CurrentTab.Text; QTUtility.DisplayNameCacheDic[CurrentAddress] = CurrentTab.Text; } else if(flag2) { CurrentTab.ToolTipText = (string)URL; } else if(((CurrentAddress.Length == 3) || CurrentAddress.StartsWith(@"\\")) || (CurrentAddress.StartsWith("http://", StringComparison.OrdinalIgnoreCase) || CurrentAddress.StartsWith("ftp://", StringComparison.OrdinalIgnoreCase))) { CurrentTab.ToolTipText = CurrentTab.CurrentPath; QTUtility.DisplayNameCacheDic[CurrentAddress] = CurrentTab.Text; } else { CurrentTab.ToolTipText = CurrentTab.CurrentPath; } if(NavigatedByCode && !NowTabCreated) { string str3; Address[] selectedItemsAt = CurrentTab.GetSelectedItemsAt(CurrentAddress, out str3); if(selectedItemsAt != null) { ShellBrowser.TrySetSelection(selectedItemsAt, str3, true); } } else if(!string.IsNullOrEmpty(QTUtility.PathToSelectInCommandLineArg)) { Address[] addresses = new Address[] { new Address(QTUtility.PathToSelectInCommandLineArg) }; ShellBrowser.TrySetSelection(addresses, null, true); QTUtility.PathToSelectInCommandLineArg = string.Empty; } if(QTUtility.RestoreFolderTree_Hide) { new WaitTimeoutCallback(WaitTimeout).BeginInvoke(150, AsyncComplete_FolderTree, false); } if(fNowRestoring) { fNowRestoring = false; if(QTUtility.LockedTabsToRestoreList.Contains(path)) { CurrentTab.TabLocked = true; } } if((!QTUtility.IsXP || FirstNavigationCompleted) && (!PInvoke.IsWindowVisible(ExplorerHandle) || PInvoke.IsIconic(ExplorerHandle))) { WindowUtils.BringExplorerToFront(ExplorerHandle); } if(pluginManager != null) { pluginManager.OnNavigationComplete(tabControl1.SelectedIndex, idl, (string)URL); } if(buttonNavHistoryMenu.DropDown.Visible) { buttonNavHistoryMenu.DropDown.Close(ToolStripDropDownCloseReason.AppFocusChange); } if(QTUtility.CheckConfig(Settings.AutoUpdate)) { UpdateChecker.Check(false); } } catch(Exception exception) { QTUtility2.MakeErrorLog(exception, null); } finally { QTUtility.RestoreFolderTree_Hide = NavigatedByCode = fNavigatedByTabSelection = NowTabCreated = fNowTravelByTree = false; tabControl1.SetRedraw(true); FirstNavigationCompleted = true; } } }
private void AddInsertTab(QTabItem tab) { switch(QTUtility.ConfigValues[1]) { case 1: tabControl1.TabPages.Insert(0, tab); return; case 2: case 3: { int index = tabControl1.TabPages.IndexOf(CurrentTab); if(index == -1) { tabControl1.TabPages.Add(tab); return; } tabControl1.TabPages.Insert((QTUtility.ConfigValues[1] == 2) ? (index + 1) : index, tab); return; } } tabControl1.TabPages.Add(tab); }
private QTabItem CreateNewTab(IDLWrapper idlw) { string path = idlw.Path; QTabItem tab = new QTabItem(QTUtility2.MakePathDisplayText(path, false), path, tabControl1); tab.NavigatedTo(path, idlw.IDL, -1); tab.ToolTipText = QTUtility2.MakePathDisplayText(path, true); AddInsertTab(tab); return tab; }
private void CreateGroup(QTabItem contextMenuedTab) { NowModalDialogShown = true; QTUtility.RefreshGroupsDic(); using(CreateNewGroupForm form = new CreateNewGroupForm(contextMenuedTab.CurrentPath, tabControl1.TabPages)) { if(NowTopMost) { form.TopMost = true; } if(DialogResult.OK == form.ShowDialog()) { QTUtility.SaveGroupsReg(); SyncButtonBarBroadCast(1); SyncTaskBarMenu(); } } NowModalDialogShown = false; }
public QTabItem Clone(bool fAll = false) { QTabItem item = new QTabItem(Text, currentPath, Owner); item.TabBounds = TabBounds; item.Comment = Comment; item.currentIDL = currentIDL; item.ToolTipText = ToolTipText; item.tooltipText2 = tooltipText2; if(fAll) { item.tabLocked = tabLocked; } LogData[] array = stckHistoryForward.ToArray(); LogData[] dataArray2 = stckHistoryBackward.ToArray(); Array.Reverse(array); Array.Reverse(dataArray2); item.stckHistoryForward = new Stack<LogData>(array); item.stckHistoryBackward = new Stack<LogData>(dataArray2); item.dicFocusedItemName = new Dictionary<string, string>(dicFocusedItemName); item.lstHistoryBranches = new List<LogData>(lstHistoryBranches.ToArray()); Dictionary<string, Address[]> dictionary = dicSelectdItems.Keys .ToDictionary(str => str, str => dicSelectdItems[str]); item.dicSelectdItems = dictionary; return item; }
private bool HandleKEYDOWN(IntPtr wParam, bool fRepeat) { Keys key = (Keys)((int)wParam); Keys mkey = (Keys)(((int)wParam) | ((int)ModifierKeys)); switch(key) { case Keys.Enter: return false; case Keys.Menu: if((!fRepeat && QTUtility.CheckConfig(Settings.ShowTabCloseButtons)) && QTUtility.CheckConfig(Settings.TabCloseBtnsWithAlt)) { tabControl1.ShowCloseButton(true); if(!QTUtility.IsXP) { return QTUtility.CheckConfig(Settings.HideMenuBar); } } return false; case Keys.ControlKey: if(!fRepeat && NowTabDragging && (DraggingTab != null) && tabControl1.GetTabMouseOn() == null) { Cursor = GetCursor(false); } break; case Keys.Tab: if(!QTUtility.CheckConfig(Settings.NoTabSwitcher) && (mkey & Keys.Control) != Keys.None) { return ShowTabSwitcher((mkey & Keys.Shift) != Keys.None, fRepeat); } break; } switch(mkey) { case Keys.Back: if(!QTUtility.IsXP) { if(listView.HasFocus()) { if(!fRepeat) { if(QTUtility.CheckConfig(Settings.BackspaceUpLevel)) { UpOneLevel(); } else { NavigateCurrentTab(true); } } return true; } } return false; case Keys.Alt | Keys.Left: NavigateCurrentTab(true); return true; case Keys.Alt | Keys.Right: NavigateCurrentTab(false); return true; case Keys.Alt | Keys.F4: if(!fRepeat) { WindowUtils.CloseExplorer(ExplorerHandle, 1); } return true; case Keys.F2: if(!QTUtility.CheckConfig(Settings.F2Selection)) { listView.HandleF2(); } return false; } if(((Keys.Control | Keys.NumPad0) <= mkey && mkey <= (Keys.Control | Keys.NumPad9)) || ((Keys.Control | Keys.D0) <= mkey && mkey <= (Keys.Control | Keys.D9))) { int num3; if(mkey >= (Keys.Control | Keys.NumPad0)) { num3 = (mkey - (Keys.Control | Keys.NumPad0)); } else { num3 = (mkey - (Keys.Control | Keys.D0)); } if(num3 == 0) { num3 = 10; } if(tabControl1.TabCount >= num3) { tabControl1.SelectTab((num3 - 1)); } return true; } int imkey = (int)mkey | 0x100000; if(imkey == QTUtility.ShortcutKeys[0]) { NavigateCurrentTab(true); return true; } if(imkey == QTUtility.ShortcutKeys[1]) { NavigateCurrentTab(false); return true; } if(imkey == QTUtility.ShortcutKeys[2]) { if(!fRepeat) { NavigateToFirstOrLast(true); } return true; } if(imkey == QTUtility.ShortcutKeys[3]) { if(!fRepeat) { NavigateToFirstOrLast(false); } return true; } if(imkey == QTUtility.ShortcutKeys[4]) { if(!fRepeat) { int selectedIndex = tabControl1.SelectedIndex; if(selectedIndex == (tabControl1.TabCount - 1)) { tabControl1.SelectedIndex = 0; } else { tabControl1.SelectedIndex = selectedIndex + 1; } } return true; } if(imkey == QTUtility.ShortcutKeys[5]) { if(!fRepeat) { int num5 = tabControl1.SelectedIndex; if(num5 == 0) { tabControl1.SelectedIndex = tabControl1.TabCount - 1; } else { tabControl1.SelectedIndex = num5 - 1; } } return true; } if(imkey == QTUtility.ShortcutKeys[6]) { if(!fRepeat && (tabControl1.TabCount > 0)) { tabControl1.SelectedIndex = 0; } return true; } if(imkey == QTUtility.ShortcutKeys[7]) { if(!fRepeat && (tabControl1.TabCount > 1)) { tabControl1.SelectedIndex = tabControl1.TabCount - 1; } return true; } if(imkey == QTUtility.ShortcutKeys[8]) { if(!fRepeat) { if(tabControl1.TabCount > 1) { CloseTab(CurrentTab); } else { WindowUtils.CloseExplorer(ExplorerHandle, 1); } } return true; } if(imkey == QTUtility.ShortcutKeys[9]) { if(!fRepeat && (tabControl1.TabCount > 1)) { CloseAllTabsExcept(CurrentTab); } return true; } if(imkey == QTUtility.ShortcutKeys[10]) { if(!fRepeat) { CloseLeftRight(true, -1); } return true; } if(imkey == QTUtility.ShortcutKeys[11]) { if(!fRepeat) { CloseLeftRight(false, -1); } return true; } if(imkey == QTUtility.ShortcutKeys[12]) { if(!fRepeat) { WindowUtils.CloseExplorer(ExplorerHandle, 1); } return true; } if(imkey == QTUtility.ShortcutKeys[13]) { if(!fRepeat) { RestoreLastClosed(); } return true; } if(imkey == QTUtility.ShortcutKeys[14]) { if(!fRepeat) { CloneTabButton(CurrentTab, null, true, -1); } return true; } if(imkey == QTUtility.ShortcutKeys[15]) { if(!fRepeat && (CurrentTab != null)) { using(IDLWrapper wrapper = new IDLWrapper(CurrentTab.CurrentIDL)) { OpenNewWindow(wrapper); } } return true; } if(imkey == QTUtility.ShortcutKeys[0x10]) { if(CurrentTab != null) { CurrentTab.TabLocked = !CurrentTab.TabLocked; } return true; } if(imkey != QTUtility.ShortcutKeys[0x11]) { if(imkey == QTUtility.ShortcutKeys[0x12]) { if(!fRepeat) { ChooseNewDirectory(); } return true; } if(imkey == QTUtility.ShortcutKeys[0x13]) { if(!fRepeat && (CurrentTab != null)) { CreateGroup(CurrentTab); } return true; } if(imkey == QTUtility.ShortcutKeys[20]) { if(!fRepeat) { OpenOptionsDialog(); } return true; } if(imkey == QTUtility.ShortcutKeys[0x15]) { if(!fRepeat) { Rectangle tabRect = tabControl1.GetTabRect(tabControl1.TabCount - 1, true); contextMenuSys.Show(PointToScreen(new Point(tabRect.Right + 10, tabRect.Bottom - 10))); } return true; } if(imkey == QTUtility.ShortcutKeys[0x16]) { if(!fRepeat) { int index = tabControl1.TabPages.IndexOf(CurrentTab); if(index != -1) { ContextMenuedTab = CurrentTab; Rectangle rectangle2 = tabControl1.GetTabRect(index, true); contextMenuTab.Show(PointToScreen(new Point(rectangle2.Right + 10, rectangle2.Bottom - 10))); } } return true; } if(((imkey == QTUtility.ShortcutKeys[0x17]) || (imkey == QTUtility.ShortcutKeys[0x18])) || (imkey == QTUtility.ShortcutKeys[0x19])) { if(!fRepeat) { IntPtr ptr2; int num7 = 3; if(imkey == QTUtility.ShortcutKeys[0x18]) { num7 = 4; } else if(imkey == QTUtility.ShortcutKeys[0x19]) { num7 = 5; } if(QTUtility.instanceManager.TryGetButtonBarHandle(ExplorerHandle, out ptr2)) { return (1 == ((int)QTUtility2.SendCOPYDATASTRUCT(ptr2, (IntPtr)4, "fromTab", (IntPtr)num7))); } } } else { if(imkey == QTUtility.ShortcutKeys[0x1a]) { WindowUtils.ShowMenuBar(QTUtility.CheckConfig(Settings.HideMenuBar), ReBarHandle); if(QTUtility.CheckConfig(Settings.HideMenuBar)) { QTUtility.ConfigValues[7] = (byte)(QTUtility.ConfigValues[7] & 0xf7); } else { QTUtility.ConfigValues[7] = (byte)(QTUtility.ConfigValues[7] | 8); } using(RegistryKey rkey = Registry.CurrentUser.CreateSubKey(@"Software\Quizo\QTTabBar")) { rkey.SetValue("Config", QTUtility.ConfigValues); } return true; } if(((imkey == QTUtility.ShortcutKeys[0x1b]) || (imkey == QTUtility.ShortcutKeys[0x1c])) || (((imkey == QTUtility.ShortcutKeys[0x1d]) || (imkey == QTUtility.ShortcutKeys[30])) || (imkey == QTUtility.ShortcutKeys[0x1f]))) { if(!fRepeat) { int num8 = 0; if(imkey == QTUtility.ShortcutKeys[0x1c]) { num8 = 1; } else if(imkey == QTUtility.ShortcutKeys[0x1d]) { num8 = 2; } else if(imkey == QTUtility.ShortcutKeys[30]) { num8 = 3; } else if(imkey == QTUtility.ShortcutKeys[0x1f]) { num8 = 4; } if((num8 < 2) && ((listView.SubDirTipMenuIsShowing()) || ((subDirTip_Tab != null) && subDirTip_Tab.MenuIsShowing))) { return false; } DoFileTools(num8); } return true; } if(imkey == QTUtility.ShortcutKeys[0x20]) { ToggleTopMost(); SyncButtonBarCurrent(0x40); return true; } if((imkey == QTUtility.ShortcutKeys[0x21]) || (imkey == QTUtility.ShortcutKeys[0x22])) { int num9; int num10; byte num11; if(0x80000 != ((int)PInvoke.Ptr_OP_AND(PInvoke.GetWindowLongPtr(ExplorerHandle, -20), 0x80000))) { if(imkey == QTUtility.ShortcutKeys[0x21]) { return true; } PInvoke.SetWindowLongPtr(ExplorerHandle, -20, PInvoke.Ptr_OP_OR(PInvoke.GetWindowLongPtr(ExplorerHandle, -20), 0x80000)); PInvoke.SetLayeredWindowAttributes(ExplorerHandle, 0, 0xff, 2); } if(PInvoke.GetLayeredWindowAttributes(ExplorerHandle, out num9, out num11, out num10)) { IntPtr ptr3; if(imkey == QTUtility.ShortcutKeys[0x21]) { if(num11 > 0xf3) { num11 = 0xff; } else { num11 = (byte)(num11 + 12); } } else if(num11 < 0x20) { num11 = 20; } else { num11 = (byte)(num11 - 12); } PInvoke.SetLayeredWindowAttributes(ExplorerHandle, 0, num11, 2); if(QTUtility.instanceManager.TryGetButtonBarHandle(ExplorerHandle, out ptr3)) { QTUtility2.SendCOPYDATASTRUCT(ptr3, (IntPtr)7, "track", (IntPtr)num11); } if(num11 == 0xff) { PInvoke.SetWindowLongPtr(ExplorerHandle, -20, PInvoke.Ptr_OP_AND(PInvoke.GetWindowLongPtr(ExplorerHandle, -20), 0xfff7ffff)); } } return true; } if(imkey == QTUtility.ShortcutKeys[0x23]) { listView.SetFocus(); return true; } if(imkey == QTUtility.ShortcutKeys[0x24]) { if(!QTUtility.IsXP) { PInvoke.SetFocus(GetSearchBand_Edit()); return true; } } else if(imkey == QTUtility.ShortcutKeys[0x25]) { IntPtr ptr4; if(QTUtility.instanceManager.TryGetButtonBarHandle(ExplorerHandle, out ptr4) && PInvoke.IsWindow(ptr4)) { QTUtility2.SendCOPYDATASTRUCT(ptr4, (IntPtr)8, null, IntPtr.Zero); return true; } } else if(imkey == QTUtility.ShortcutKeys[0x26]) { if(!QTUtility.CheckConfig(Settings.NoShowSubDirTips)) { if(!fRepeat) { listView.ShowAndClickSubDirTip(); } return true; } } else { if(imkey == QTUtility.ShortcutKeys[0x27]) { if(!fRepeat) { ShowTaskbarItem(ExplorerHandle, false); } return true; } if(imkey == QTUtility.ShortcutKeys[40]) { tabControl1.Focus(); tabControl1.FocusNextTab(false, true, false); return true; } if(Array.IndexOf(QTUtility.PluginShortcutKeysCache, imkey) != -1) { foreach(string str in QTUtility.dicPluginShortcutKeys.Keys) { int[] numArray = QTUtility.dicPluginShortcutKeys[str]; if(numArray != null) { for(int i = 0; i < numArray.Length; i++) { if(imkey == numArray[i]) { Plugin plugin; if(pluginManager.TryGetPlugin(str, out plugin)) { try { plugin.Instance.OnShortcutKeyPressed(i); } catch(Exception exception) { PluginManager.HandlePluginException(exception, ExplorerHandle, plugin.PluginInformation.Name, "On shortcut key pressed. Index is " + i); } return true; } return false; } } } } } else { if(!fRepeat && QTUtility.dicUserAppShortcutKeys.ContainsKey(imkey)) { MenuItemArguments mia = QTUtility.dicUserAppShortcutKeys[imkey]; try { using(IDLWrapper wrapper2 = GetCurrentPIDL()) { Address[] addressArray; string str2; if((wrapper2.Available && wrapper2.HasPath) && ShellBrowser.TryGetSelection(out addressArray, out str2, false)) { AppLauncher launcher = new AppLauncher(addressArray, wrapper2.Path); launcher.ReplaceTokens_WorkingDir(mia); launcher.ReplaceTokens_Arguments(mia); } } AppLauncher.Execute(mia, ExplorerHandle); } catch(Exception exception2) { QTUtility2.MakeErrorLog(exception2, null); } finally { mia.RestoreOriginalArgs(); } return true; } if(!fRepeat && QTUtility.dicGroupShortcutKeys.ContainsKey(imkey)) { OpenGroup(QTUtility.dicGroupShortcutKeys[imkey], false); return true; } } } } imkey -= 0x100000; return (imkey == 0x20057); } bool flag = tabControl1.TabPages.Cast<QTabItem>().All(item2 => item2.TabLocked); foreach(QTabItem item3 in tabControl1.TabPages) { item3.TabLocked = !flag; } return true; }
private void tab_Closed(object sender, EventArgs e) { this.tab.Closed -= new EventHandler(this.tab_Closed); this.tab = null; this.tabBar = null; }
private void HandleTabClickAction(QTabItem clickedTab, bool fWheel) { byte num = fWheel ? QTUtility.ConfigValues[12] : QTUtility.ConfigValues[3]; switch(num) { case 0: case 1: if(!(fWheel ^ (num == 1))) { UpOneLevel(); return; } NowTabDragging = false; if(tabControl1.TabCount <= 1) { if(clickedTab.TabLocked) { break; } WindowUtils.CloseExplorer(ExplorerHandle, 1); return; } CloseTab(clickedTab); return; case 2: clickedTab.TabLocked = !clickedTab.TabLocked; return; case 3: ContextMenuedTab = clickedTab; contextMenuTab.Show(MousePosition); return; case 4: using(IDLWrapper wrapper = new IDLWrapper(clickedTab.CurrentIDL)) { OpenNewWindow(wrapper); } if((ModifierKeys & Keys.Shift) != Keys.Shift) { break; } CloseTab(clickedTab); return; case 5: CloneTabButton(clickedTab, null, true, -1); return; case 6: { string currentPath = clickedTab.CurrentPath; if(currentPath.IndexOf("???") != -1) { currentPath = currentPath.Substring(0, currentPath.IndexOf("???")); } SetStringClipboard(currentPath); return; } case 7: ShellMethods.ShowProperties(clickedTab.CurrentIDL); break; default: return; } }
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { QTabItem selectedTab = (QTabItem)tabControl1.SelectedTab; string currentPath = selectedTab.CurrentPath; if(IsSpecialFolderNeedsToTravel(currentPath) && LogEntryDic.ContainsKey(selectedTab.GetLogHash(true, 0))) { NavigatedByCode = true; CurrentTab = selectedTab; while(lstActivatedTabs.Remove(CurrentTab)) { } lstActivatedTabs.Add(CurrentTab); if(lstActivatedTabs.Count > 15) { lstActivatedTabs.RemoveAt(0); } fNavigatedByTabSelection = NavigateToPastSpecialDir(CurrentTab.GetLogHash(true, 0)); if(pluginManager != null) { pluginManager.OnTabChanged(tabControl1.SelectedIndex, selectedTab.CurrentIDL, selectedTab.CurrentPath); } if(tabControl1.Focused) { listView.SetFocus(); } } else { IDLWrapper idlw = null; if((selectedTab.CurrentIDL != null) && (selectedTab.CurrentIDL.Length > 0)) { idlw = new IDLWrapper(selectedTab.CurrentIDL); } if((idlw == null) || !idlw.Available) { idlw = new IDLWrapper(selectedTab.CurrentPath); } using(idlw) { if(!idlw.Available) { CancelFailedTabChanging(currentPath); return; } CurrentTab = selectedTab; while(lstActivatedTabs.Remove(CurrentTab)) { } lstActivatedTabs.Add(CurrentTab); if(lstActivatedTabs.Count > 15) { lstActivatedTabs.RemoveAt(0); } if(((currentPath != CurrentAddress) || (QTUtility.IsXP && (currentPath == QTUtility.PATH_SEARCHFOLDER))) || NowTabCloned) { NavigatedByCode = true; fNavigatedByTabSelection = true; NowTabCloned = false; if(ShellBrowser.Navigate(idlw) != 0) { CancelFailedTabChanging(currentPath); return; } } else { SyncTravelState(); } } if(tabControl1.Focused) { listView.SetFocus(); } if(pluginManager != null) { pluginManager.OnTabChanged(tabControl1.SelectedIndex, CurrentTab.CurrentIDL, CurrentTab.CurrentPath); } } }
private void HideToolTipForDD() { tabForDD = null; iModKeyStateDD = 0; if(toolTipForDD != null) { toolTipForDD.Hide(tabControl1); } if(timerOnTab != null) { timerOnTab.Enabled = false; } }
private void CloneTabButton(QTabItem tab, LogData log) { NowTabCloned = true; QTabItem item = tab.Clone(); AddInsertTab(item); using(IDLWrapper wrapper = new IDLWrapper(log.IDL)) { if(wrapper.Available) { item.NavigatedTo(wrapper.Path, wrapper.IDL, log.Hash); } } tabControl1.SelectTab(item); }
private void InitializeComponent() { components = new Container(); buttonNavHistoryMenu = new ToolStripDropDownButton(); tabControl1 = new QTabControl(); CurrentTab = new QTabItem(string.Empty, string.Empty, tabControl1); contextMenuTab = new ContextMenuStripEx(components, false); contextMenuSys = new ContextMenuStripEx(components, false); tabControl1.SuspendLayout(); contextMenuSys.SuspendLayout(); contextMenuTab.SuspendLayout(); SuspendLayout(); bool flag = QTUtility.CheckConfig(Settings.ShowNavButtons); if(flag) { InitializeNavBtns(false); } buttonNavHistoryMenu.AutoSize = false; buttonNavHistoryMenu.DisplayStyle = ToolStripItemDisplayStyle.None; buttonNavHistoryMenu.Enabled = false; buttonNavHistoryMenu.Size = new Size(13, 0x15); buttonNavHistoryMenu.DropDown = new DropDownMenuBase(components, true, true, true); buttonNavHistoryMenu.DropDown.ItemClicked += NavigationButton_DropDownMenu_ItemClicked; buttonNavHistoryMenu.DropDownOpening += NavigationButtons_DropDownOpening; buttonNavHistoryMenu.DropDown.ImageList = QTUtility.ImageListGlobal; tabControl1.SetRedraw(false); tabControl1.TabPages.Add(CurrentTab); tabControl1.Dock = DockStyle.Fill; tabControl1.ContextMenuStrip = contextMenuTab; tabControl1.RefreshOptions(true); tabControl1.RowCountChanged += tabControl1_RowCountChanged; tabControl1.Deselecting += tabControl1_Deselecting; tabControl1.Selecting += tabControl1_Selecting; tabControl1.SelectedIndexChanged += tabControl1_SelectedIndexChanged; tabControl1.GotFocus += Controls_GotFocus; tabControl1.MouseEnter += tabControl1_MouseEnter; tabControl1.MouseLeave += tabControl1_MouseLeave; tabControl1.MouseDown += tabControl1_MouseDown; tabControl1.MouseUp += tabControl1_MouseUp; tabControl1.MouseMove += tabControl1_MouseMove; tabControl1.MouseDoubleClick += tabControl1_MouseDoubleClick; tabControl1.ItemDrag += tabControl1_ItemDrag; tabControl1.PointedTabChanged += tabControl1_PointedTabChanged; tabControl1.TabCountChanged += tabControl1_TabCountChanged; tabControl1.CloseButtonClicked += tabControl1_CloseButtonClicked; tabControl1.TabIconMouseDown += tabControl1_TabIconMouseDown; contextMenuTab.Items.Add(new ToolStripMenuItem()); contextMenuTab.ShowImageMargin = false; contextMenuTab.ItemClicked += contextMenuTab_ItemClicked; contextMenuTab.Opening += contextMenuTab_Opening; contextMenuTab.Closed += contextMenuTab_Closed; contextMenuSys.Items.Add(new ToolStripMenuItem()); contextMenuSys.ShowImageMargin = false; contextMenuSys.ItemClicked += contextMenuSys_ItemClicked; contextMenuSys.Opening += contextMenuSys_Opening; Controls.Add(tabControl1); if(flag) { Controls.Add(toolStrip); } MinSize = new Size(150, QTUtility.TabHeight + 2); Height = QTUtility.TabHeight + 2; ContextMenuStrip = contextMenuSys; MouseDoubleClick += QTTabBarClass_MouseDoubleClick; tabControl1.ResumeLayout(false); contextMenuSys.ResumeLayout(false); contextMenuTab.ResumeLayout(false); if(flag) { toolStrip.ResumeLayout(false); toolStrip.PerformLayout(); } ResumeLayout(false); }
// TODO: Optional params private bool CloseTab(QTabItem closingTab) { return ((tabControl1.TabCount > 1) && CloseTab(closingTab, false)); }
private void NavigateBranches(QTabItem tab, int index) { LogData log = tab.Branches[index]; Keys modifierKeys = ModifierKeys; if(modifierKeys == Keys.Control) { using(IDLWrapper wrapper = new IDLWrapper(log.IDL)) { if(!wrapper.Available) { ShowMessageNavCanceled(log.Path, false); } else { OpenNewWindow(wrapper); } } } else if(modifierKeys == Keys.Shift) { CloneTabButton(tab, log); } else { tabControl1.SelectTab(tab); if(IsSpecialFolderNeedsToTravel(log.Path)) { SaveSelectedItems(CurrentTab); NavigatedByCode = true; NavigateToPastSpecialDir(log.Hash); } else { NavigatedByCode = false; using(IDLWrapper wrapper2 = new IDLWrapper(log.IDL)) { if(!wrapper2.Available) { ShowMessageNavCanceled(log.Path, false); } else { SaveSelectedItems(CurrentTab); ShellBrowser.Navigate(wrapper2); } } } } }
public bool CreateTab(Address address, int index, bool fLocked, bool fSelect) { using(IDLWrapper wrapper = new IDLWrapper(address)) { address.ITEMIDLIST = wrapper.IDL; address.Path = wrapper.Path; } if((address.ITEMIDLIST == null) || (address.ITEMIDLIST.Length <= 0)) { return false; } QTabItem tab = new QTabItem(QTUtility2.MakePathDisplayText(address.Path, false), address.Path, tabBar.tabControl1); tab.NavigatedTo(address.Path, address.ITEMIDLIST, -1, false); tab.ToolTipText = QTUtility2.MakePathDisplayText(address.Path, true); tab.TabLocked = fLocked; if(index < 0) { tabBar.AddInsertTab(tab); } else { if(index > tabBar.tabControl1.TabCount) { index = tabBar.tabControl1.TabCount; } tabBar.tabControl1.TabPages.Insert(index, tab); } if(fSelect) { tabBar.tabControl1.SelectTab(tab); } return true; }
private void SaveSelectedItems(QTabItem tab) { Address[] addressArray; string str; if(((tab != null) && !string.IsNullOrEmpty(CurrentAddress)) && ShellBrowser.TryGetSelection(out addressArray, out str, false)) { tab.SetSelectedItemsAt(CurrentAddress, addressArray, str); } }
private void tab_Closed(object sender, EventArgs e) { tab.Closed -= tab_Closed; tab = null; tabBar = null; }
private void ShowSubdirTip_Tab(QTabItem tab, bool fShow, int offsetX, bool fKey, bool fParent) { try { if(fShow) { if(Explorer.Busy || string.IsNullOrEmpty(tab.CurrentPath)) { tabControl1.SetSubDirTipShown(false); } else { string currentPath = tab.CurrentPath; if(fParent || ShellMethods.TryMakeSubDirTipPath(ref currentPath)) { if(subDirTip_Tab == null) { subDirTip_Tab = new SubDirTipForm(Handle, true, listView); subDirTip_Tab.MenuItemClicked += subDirTip_MenuItemClicked; subDirTip_Tab.MultipleMenuItemsClicked += subDirTip_MultipleMenuItemsClicked; subDirTip_Tab.MenuItemRightClicked += subDirTip_MenuItemRightClicked; subDirTip_Tab.MenuClosed += subDirTip_Tab_MenuClosed; subDirTip_Tab.MultipleMenuItemsRightClicked += subDirTip_MultipleMenuItemsRightClicked; } ContextMenuedTab = tab; Point pnt = tabControl1.PointToScreen(new Point(tab.TabBounds.X + offsetX, fParent ? tab.TabBounds.Top : (tab.TabBounds.Bottom - 3))); if(tab != CurrentTab) { pnt.X += 2; } tabControl1.SetSubDirTipShown(subDirTip_Tab.ShowMenuWithoutShowForm(currentPath, pnt, fParent)); } else { tabControl1.SetSubDirTipShown(false); HideSubDirTip_Tab_Menu(); } } } else { HideSubDirTip_Tab_Menu(); } } catch(Exception exception) { QTUtility2.MakeErrorLog(exception, "tabsubdir"); } }
public ITab HitTest(Point pnt) { QTabItem tabMouseOn = tabBar.tabControl1.GetTabMouseOn(); return(tabMouseOn != null ? new TabWrapper(tabMouseOn, tabBar) : null); }
private void ShowToolTipForDD(QTabItem tab, int iState, int grfKeyState) { if(((tabForDD == null) || (tabForDD != tab)) || (iModKeyStateDD != grfKeyState)) { tabForDD = tab; iModKeyStateDD = grfKeyState; if(timerOnTab == null) { timerOnTab = new Timer(components); timerOnTab.Tick += timerOnTab_Tick; } timerOnTab.Enabled = false; timerOnTab.Interval = QTUtility.CheckConfig(Settings.DragDropOntoTabs) ? 0x4b0 : 700; timerOnTab.Enabled = true; if(QTUtility.CheckConfig(Settings.DragDropOntoTabs) && (iState != -1)) { Rectangle tabRect = tabControl1.GetTabRect(tab); Point lpPoints = new Point(tabRect.X + ((tabRect.Width * 3) / 4), tabRect.Bottom + 0x10); string[] strArray = QTUtility.TextResourcesDic["DragDropToolTip"]; string str; switch((grfKeyState & 12)) { case 4: str = strArray[1]; break; case 8: str = strArray[0]; break; case 12: str = strArray[2]; break; default: if(iState == 1) { str = strArray[0]; } else { str = strArray[1]; } break; } if(toolTipForDD == null) { toolTipForDD = new ToolTip(components); toolTipForDD.UseAnimation = toolTipForDD.UseFading = false; } toolTipForDD.ToolTipTitle = str; if(PInvoke.GetForegroundWindow() != ExplorerHandle) { Type type = typeof(ToolTip); BindingFlags bindingAttr = BindingFlags.NonPublic | BindingFlags.Instance; MethodInfo method = type.GetMethod("SetTrackPosition", bindingAttr); MethodInfo info2 = type.GetMethod("SetTool", bindingAttr); PInvoke.MapWindowPoints(tabControl1.Handle, IntPtr.Zero, ref lpPoints, 1); method.Invoke(toolTipForDD, new object[] { lpPoints.X, lpPoints.Y }); info2.Invoke(toolTipForDD, new object[] { tabControl1, tab.CurrentPath, 2, lpPoints }); } else { toolTipForDD.Active = true; toolTipForDD.Show(tab.CurrentPath, tabControl1, lpPoints); } } } }
private void tabControl1_CloseButtonClicked(object sender, QTabCancelEventArgs e) { if(NowTabDragging) { Cursor = Cursors.Default; NowTabDragging = false; DraggingTab = null; DraggingDestRect = Rectangle.Empty; SyncButtonBarCurrent(12); e.Cancel = true; } else if(!Explorer.Busy) { QTabItem tabPage = (QTabItem)e.TabPage; if(tabControl1.TabCount > 1) { e.Cancel = !CloseTab(tabPage); } else { WindowUtils.CloseExplorer(ExplorerHandle, 1); } } }
private void tabControl1_MouseDown(object sender, MouseEventArgs e) { QTabItem tabMouseOn = (QTabItem)tabControl1.GetTabMouseOn(); DraggingTab = null; if(tabMouseOn != null) { if(e.Button == MouseButtons.Left) { NowTabDragging = true; DraggingTab = tabMouseOn; } else if(e.Button == MouseButtons.Right) { ContextMenuedTab = tabMouseOn; } } }
private void tabControl1_MouseMove(object sender, MouseEventArgs e) { RECT rect; if((tabControl1.Capture && (((e.X < 0) || (e.Y < 0)) || ((e.X > tabControl1.Width) || (e.Y > tabControl1.Height)))) && (PInvoke.GetWindowRect(ReBarHandle, out rect) && !PInvoke.PtInRect(ref rect, tabControl1.PointToScreen(e.Location)))) { Cursor = Cursors.Default; tabControl1.Capture = false; } else if((NowTabDragging && (DraggingTab != null)) && ((ModifierKeys & Keys.Shift) != Keys.Shift)) { if(Explorer.Busy || (MouseButtons != MouseButtons.Left)) { NowTabDragging = false; DraggingTab = null; } else { int num; QTabItem tabMouseOn = (QTabItem)tabControl1.GetTabMouseOn(out num); int index = tabControl1.TabPages.IndexOf(DraggingTab); if((num > (tabControl1.TabCount - 1)) || (num < 0)) { if((num == -1) && (ModifierKeys == Keys.Control)) { Cursor = GetCursor(false); DraggingDestRect = new Rectangle(1, 0, 0, 0); } else { Cursor = Cursors.Default; } } else if((index <= (tabControl1.TabCount - 1)) && (index >= 0)) { Rectangle tabRect = tabControl1.GetTabRect(num, false); Rectangle rectangle2 = tabControl1.GetTabRect(index, false); if(tabMouseOn != null) { if(tabMouseOn != DraggingTab) { if(!DraggingDestRect.Contains(tabControl1.PointToClient(MousePosition))) { Cursor = GetCursor(true); bool flag = tabMouseOn.Row != DraggingTab.Row; bool flag2 = tabControl1.SelectedTab != DraggingTab; tabControl1.TabPages.Relocate(index, num); if(num < index) { DraggingDestRect = new Rectangle(tabRect.X + rectangle2.Width, tabRect.Y, tabRect.Width - rectangle2.Width, tabRect.Height); } else { DraggingDestRect = new Rectangle(tabRect.X, tabRect.Y, tabRect.Width - rectangle2.Width, tabRect.Height); } if((flag && !flag2) && !QTUtility.CheckConfig(Settings.MultipleRow2)) { Rectangle rectangle3 = tabControl1.GetTabRect(num, false); Point p = new Point(rectangle3.X + (rectangle3.Width / 2), rectangle3.Y + (QTUtility.TabHeight / 2)); Cursor.Position = tabControl1.PointToScreen(p); } SyncButtonBarCurrent(12); } } else if((curTabCloning != null) && (Cursor == curTabCloning)) { Cursor = GetCursor(true); } } } } } }
public QTabCancelEventArgs(QTabItem tabPage, int tabPageIndex, bool cancel, TabControlAction action) : base(null, tabPageIndex, cancel, action) { this.tabPage = tabPage; }