Use _shutting_down instead of disconnecting signal
This will most likely cause less pain than disconnecting the signal, which seems to be broken on OS X.
This commit is contained in:
parent
034f1136d3
commit
2c9b5f24fc
@ -63,6 +63,7 @@ class TabbedBrowser(tabwidget.TabWidget):
|
|||||||
tabbar -> new-tab-position set to 'left'.
|
tabbar -> new-tab-position set to 'left'.
|
||||||
_tab_insert_idx_right: Same as above, for 'right'.
|
_tab_insert_idx_right: Same as above, for 'right'.
|
||||||
_undo_stack: List of UndoEntry namedtuples of closed tabs.
|
_undo_stack: List of UndoEntry namedtuples of closed tabs.
|
||||||
|
_shutting_down: Whether we're currently shutting down.
|
||||||
|
|
||||||
Signals:
|
Signals:
|
||||||
cur_progress: Progress of the current tab changed (loadProgress).
|
cur_progress: Progress of the current tab changed (loadProgress).
|
||||||
@ -101,6 +102,7 @@ class TabbedBrowser(tabwidget.TabWidget):
|
|||||||
self._win_id = win_id
|
self._win_id = win_id
|
||||||
self._tab_insert_idx_left = 0
|
self._tab_insert_idx_left = 0
|
||||||
self._tab_insert_idx_right = -1
|
self._tab_insert_idx_right = -1
|
||||||
|
self._shutting_down = False
|
||||||
self.tabCloseRequested.connect(self.on_tab_close_requested)
|
self.tabCloseRequested.connect(self.on_tab_close_requested)
|
||||||
self.currentChanged.connect(self.on_current_changed)
|
self.currentChanged.connect(self.on_current_changed)
|
||||||
self.cur_load_started.connect(self.on_cur_load_started)
|
self.cur_load_started.connect(self.on_cur_load_started)
|
||||||
@ -229,10 +231,7 @@ class TabbedBrowser(tabwidget.TabWidget):
|
|||||||
|
|
||||||
def shutdown(self):
|
def shutdown(self):
|
||||||
"""Try to shut down all tabs cleanly."""
|
"""Try to shut down all tabs cleanly."""
|
||||||
try:
|
self._shutting_down = True
|
||||||
self.currentChanged.disconnect()
|
|
||||||
except TypeError:
|
|
||||||
log.destroy.debug("Error while shutting down tabs")
|
|
||||||
for tab in self.widgets():
|
for tab in self.widgets():
|
||||||
self._remove_tab(tab)
|
self._remove_tab(tab)
|
||||||
|
|
||||||
@ -541,8 +540,8 @@ class TabbedBrowser(tabwidget.TabWidget):
|
|||||||
@pyqtSlot(int)
|
@pyqtSlot(int)
|
||||||
def on_current_changed(self, idx):
|
def on_current_changed(self, idx):
|
||||||
"""Set last-focused-tab and leave hinting mode when focus changed."""
|
"""Set last-focused-tab and leave hinting mode when focus changed."""
|
||||||
if idx == -1:
|
if idx == -1 or self._shutting_down:
|
||||||
# closing the last tab (before quitting)
|
# closing the last tab (before quitting) or shutting down
|
||||||
return
|
return
|
||||||
tab = self.widget(idx)
|
tab = self.widget(idx)
|
||||||
log.modes.debug("Current tab changed, focusing {!r}".format(tab))
|
log.modes.debug("Current tab changed, focusing {!r}".format(tab))
|
||||||
|
Loading…
Reference in New Issue
Block a user