Add add_undo parameter for closing tabs
By default, closed tabs should be undoable, but when a tab is detached :undo should not reopen that tab in the old window.
This commit is contained in:
parent
4a14ab5c06
commit
af97f9efae
@ -427,7 +427,7 @@ class CommandDispatcher:
|
|||||||
url = self._current_url()
|
url = self._current_url()
|
||||||
self._open(url, window=True)
|
self._open(url, window=True)
|
||||||
cur_widget = self._current_widget()
|
cur_widget = self._current_widget()
|
||||||
self._tabbed_browser.close_tab(cur_widget)
|
self._tabbed_browser.close_tab(cur_widget, add_undo=False)
|
||||||
|
|
||||||
def _back_forward(self, tab, bg, window, count, forward):
|
def _back_forward(self, tab, bg, window, count, forward):
|
||||||
"""Helper function for :back/:forward."""
|
"""Helper function for :back/:forward."""
|
||||||
|
@ -217,11 +217,12 @@ class TabbedBrowser(tabwidget.TabWidget):
|
|||||||
for tab in self.widgets():
|
for tab in self.widgets():
|
||||||
self._remove_tab(tab)
|
self._remove_tab(tab)
|
||||||
|
|
||||||
def close_tab(self, tab):
|
def close_tab(self, tab, add_undo=True):
|
||||||
"""Close a tab.
|
"""Close a tab.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
tab: The QWebView to be closed.
|
tab: The QWebView to be closed.
|
||||||
|
add_undo: Whether the tab close can be undone.
|
||||||
"""
|
"""
|
||||||
last_close = config.get('tabs', 'last-close')
|
last_close = config.get('tabs', 'last-close')
|
||||||
count = self.count()
|
count = self.count()
|
||||||
@ -229,7 +230,7 @@ class TabbedBrowser(tabwidget.TabWidget):
|
|||||||
if last_close == 'ignore' and count == 1:
|
if last_close == 'ignore' and count == 1:
|
||||||
return
|
return
|
||||||
|
|
||||||
self._remove_tab(tab)
|
self._remove_tab(tab, add_undo=add_undo)
|
||||||
|
|
||||||
if count == 1: # We just closed the last tab above.
|
if count == 1: # We just closed the last tab above.
|
||||||
if last_close == 'close':
|
if last_close == 'close':
|
||||||
@ -243,11 +244,12 @@ class TabbedBrowser(tabwidget.TabWidget):
|
|||||||
url = config.get('general', 'default-page')
|
url = config.get('general', 'default-page')
|
||||||
self.openurl(url, newtab=True)
|
self.openurl(url, newtab=True)
|
||||||
|
|
||||||
def _remove_tab(self, tab):
|
def _remove_tab(self, tab, add_undo=True):
|
||||||
"""Remove a tab from the tab list and delete it properly.
|
"""Remove a tab from the tab list and delete it properly.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
tab: The QWebView to be closed.
|
tab: The QWebView to be closed.
|
||||||
|
add_undo: Whether the tab close can be undone.
|
||||||
"""
|
"""
|
||||||
idx = self.indexOf(tab)
|
idx = self.indexOf(tab)
|
||||||
if idx == -1:
|
if idx == -1:
|
||||||
@ -261,6 +263,7 @@ class TabbedBrowser(tabwidget.TabWidget):
|
|||||||
window=self._win_id)
|
window=self._win_id)
|
||||||
if tab.url().isValid():
|
if tab.url().isValid():
|
||||||
history_data = tab.history.serialize()
|
history_data = tab.history.serialize()
|
||||||
|
if add_undo:
|
||||||
entry = UndoEntry(tab.url(), history_data, idx)
|
entry = UndoEntry(tab.url(), history_data, idx)
|
||||||
self._undo_stack.append(entry)
|
self._undo_stack.append(entry)
|
||||||
elif tab.url().isEmpty():
|
elif tab.url().isEmpty():
|
||||||
|
Loading…
Reference in New Issue
Block a user