From 9e08783802988674daeb2386de064b8601759156 Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sun, 25 Nov 2018 15:12:12 -0500 Subject: [PATCH] Add middle click to close fitting tab (#1804) --- gui/chrome_tabs.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gui/chrome_tabs.py b/gui/chrome_tabs.py index b50073565..66c1c262e 100644 --- a/gui/chrome_tabs.py +++ b/gui/chrome_tabs.py @@ -736,6 +736,7 @@ class _TabsContainer(wx.Panel): self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnErase) self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp) + self.Bind(wx.EVT_MIDDLE_UP, self.OnMiddleUp) self.Bind(wx.EVT_MOTION, self.OnMotion) self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_SYS_COLOUR_CHANGED, self.OnSysColourChanged) @@ -776,6 +777,29 @@ class _TabsContainer(wx.Panel): self.dragged_tab = tab + def OnMiddleUp(self, event): + mposx, mposy = event.GetPosition() + + tab = self.FindTabAtPos(mposx, mposy) + + if tab is None or not tab.closeable: # if not able to close, return False + return False + + index = self.tabs.index(tab) + ev = PageClosing(index) + wx.PostEvent(self.Parent, ev) + + if ev.isVetoed(): + return False + + index = self.GetTabIndex(tab) + self.Parent.DeletePage(index) + wx.PostEvent(self.Parent, PageClosed(index=index)) + + sel = self.GetSelected() + if sel is not None: + wx.PostEvent(self.Parent, PageChanged(-1, sel)) + def OnMotion(self, event): """ Determines what happens when the mouse moves. This handles primarily