summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qutebrowser/browser/commands.py1
-rw-r--r--qutebrowser/mainwindow/tabbedbrowser.py1
-rw-r--r--qutebrowser/mainwindow/treetabbedbrowser.py12
-rw-r--r--qutebrowser/mainwindow/treetabwidget.py39
-rw-r--r--qutebrowser/misc/notree.py29
5 files changed, 45 insertions, 37 deletions
diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py
index d7212d6ce..6784f0c1d 100644
--- a/qutebrowser/browser/commands.py
+++ b/qutebrowser/browser/commands.py
@@ -496,7 +496,6 @@ class CommandDispatcher:
# second pass: copy tree structure over
newroot = tabbed_browser.widget.tree_root
- oldroot = self._tabbed_browser.widget.tree_root
for node in traversed:
if node.parent.uid in uid_map:
uid = uid_map[node.uid]
diff --git a/qutebrowser/mainwindow/tabbedbrowser.py b/qutebrowser/mainwindow/tabbedbrowser.py
index 89b43285d..c07b9e1ad 100644
--- a/qutebrowser/mainwindow/tabbedbrowser.py
+++ b/qutebrowser/mainwindow/tabbedbrowser.py
@@ -616,6 +616,7 @@ class TabbedBrowser(QWidget):
background: bool = None,
related: bool = True,
idx: int = None,
+ sibling: bool = False, # pylint: disable=unused-argument
) -> browsertab.AbstractTab:
"""Open a new tab with a given URL.
diff --git a/qutebrowser/mainwindow/treetabbedbrowser.py b/qutebrowser/mainwindow/treetabbedbrowser.py
index 5e2f796f1..75a3c55f8 100644
--- a/qutebrowser/mainwindow/treetabbedbrowser.py
+++ b/qutebrowser/mainwindow/treetabbedbrowser.py
@@ -16,7 +16,6 @@ from qutebrowser.mainwindow.tabbedbrowser import TabbedBrowser
from qutebrowser.mainwindow.treetabwidget import TreeTabWidget
from qutebrowser.browser import browsertab
from qutebrowser.misc import notree
-from qutebrowser.utils import log
@dataclasses.dataclass
@@ -81,7 +80,6 @@ class TreeTabbedBrowser(TabbedBrowser):
def _remove_tab(self, tab, *, add_undo=True, new_undo=True, crashed=False):
"""Handle children positioning after a tab is removed."""
-
if not tab.url().isEmpty() and tab.url().isValid() and add_undo:
idx = self.widget.indexOf(tab)
self._add_undo_entry(tab, idx, new_undo)
@@ -128,7 +126,12 @@ class TreeTabbedBrowser(TabbedBrowser):
self.widget.tree_tab_update()
- def _add_undo_entry(self, tab, idx, new_undo):
+ def _add_undo_entry(
+ self,
+ tab,
+ idx, # pylint: disable=unused-argument
+ new_undo,
+ ):
"""Save undo entry with tree information.
This function was removed in tabbedbrowser, but it is still useful here because
@@ -199,8 +202,8 @@ class TreeTabbedBrowser(TabbedBrowser):
self, url: QUrl = None,
background: bool = None,
related: bool = True,
- sibling: bool = False,
idx: int = None,
+ sibling: bool = False,
) -> browsertab.AbstractTab:
"""Open a new tab with a given url.
@@ -211,7 +214,6 @@ class TreeTabbedBrowser(TabbedBrowser):
focused tab. Follows `tabs.new_position.tree.sibling`.
"""
- # pylint: disable=arguments-differ
# we save this now because super.tabopen also resets the focus
cur_tab = self.widget.currentWidget()
tab = super().tabopen(url, background, related, idx)
diff --git a/qutebrowser/mainwindow/treetabwidget.py b/qutebrowser/mainwindow/treetabwidget.py
index 082b7a079..92e18ae77 100644
--- a/qutebrowser/mainwindow/treetabwidget.py
+++ b/qutebrowser/mainwindow/treetabwidget.py
@@ -75,7 +75,7 @@ class TreeTabWidget(TabWidget):
# empty_urls here is a proxy for "there is a session being loaded into
# this window"
empty_urls = all(
- [self.widget(idx).url().toString() == "" for idx in range(self.count())]
+ not self.widget(idx).url().toString() for idx in range(self.count())
)
if empty_urls and is_hidden:
# All tabs will be added to the tab widget during session load
@@ -121,24 +121,25 @@ class TreeTabWidget(TabWidget):
for node in self.tree_root.traverse():
if node.value is None:
continue
- if any(ancestor.collapsed for ancestor in node.path[:-1]):
- if self.indexOf(node.value) != -1:
- # node should be hidden but is shown
- cur_tab = node.value
- idx = self.indexOf(cur_tab)
- if idx != -1:
- self.removeTab(idx)
- else:
- if self.indexOf(node.value) == -1:
- # node should be shown but is hidden
- parent = node.parent
- tab = node.value
- name = tab.title()
- icon = tab.icon()
- if node.parent is not None:
- parent_idx = self.indexOf(node.parent.value)
- self.insertTab(parent_idx + 1, tab, icon, name)
- tab.node.parent = parent # insertTab resets node
+
+ should_be_hidden = any(ancestor.collapsed for ancestor in node.path[:-1])
+ is_shown = self.indexOf(node.value) != -1
+ if should_be_hidden and is_shown:
+ # node should be hidden but is shown
+ cur_tab = node.value
+ idx = self.indexOf(cur_tab)
+ if idx != -1:
+ self.removeTab(idx)
+ elif not should_be_hidden and not is_shown:
+ # node should be shown but is hidden
+ parent = node.parent
+ tab = node.value
+ name = tab.title()
+ icon = tab.icon()
+ if node.parent is not None:
+ parent_idx = self.indexOf(node.parent.value)
+ self.insertTab(parent_idx + 1, tab, icon, name)
+ tab.node.parent = parent # insertTab resets node
def tree_tab_update(self):
"""Update titles and positions."""
diff --git a/qutebrowser/misc/notree.py b/qutebrowser/misc/notree.py
index 297673bfb..e12a8bf3f 100644
--- a/qutebrowser/misc/notree.py
+++ b/qutebrowser/misc/notree.py
@@ -57,15 +57,15 @@ class TraverseOrder(enum.Enum):
POST_R: post-order-reverse: like POST but rightmost nodes first.
"""
- PRE = 'pre-order'
- POST = 'post-order'
- POST_R = 'post-order-reverse'
+ PRE = 'pre-order' # pylint: disable=invalid-name
+ POST = 'post-order' # pylint: disable=invalid-name
+ POST_R = 'post-order-reverse' # pylint: disable=invalid-name
uid_gen = itertools.count(0)
# generic type of value held by Node
-T = TypeVar('T') # pylint: disable=invalid-name
+T = TypeVar('T')
class Node(Generic[T]):
@@ -187,7 +187,7 @@ class Node(Generic[T]):
def __set_modified(self) -> None:
"""If self is modified, every ancestor is modified as well."""
for node in self.path:
- node.__modified = True # pylint: disable=protected-access
+ node.__modified = True # pylint: disable=protected-access,unused-private-member
def render(self) -> List[Tuple[str, 'Node[T]']]:
"""Render a tree with ascii symbols.
@@ -217,11 +217,10 @@ class Node(Generic[T]):
result += [subtree[0]]
else:
result += subtree
+ elif child is self.children[-1]:
+ result.append((CORNER, child))
else:
- if child is self.children[-1]:
- result.append((CORNER, child))
- else:
- result.append((INTERSECTION, child))
+ result.append((INTERSECTION, child))
self.__modified = False
self.__rendered = list(result)
return list(result)
@@ -253,11 +252,17 @@ class Node(Generic[T]):
if order in [TraverseOrder.POST, TraverseOrder.POST_R]:
yield self
- def __add_child(self, node: 'Node[T]') -> None:
+ def __add_child( # pylint: disable=unused-private-member
+ self,
+ node: 'Node[T]',
+ ) -> None:
if node not in self.__children:
self.__children.append(node)
- def __disown(self, value: 'Node[T]') -> None:
+ def __disown( # pylint: disable=unused-private-member
+ self,
+ value: 'Node[T]',
+ ) -> None:
self.__set_modified()
if value in self.__children:
self.__children.remove(value)
@@ -286,7 +291,7 @@ class Node(Generic[T]):
"""
if to not in ['first', 'last', 'next', 'prev']:
- raise Exception("Invalid value supplied for 'to': " + to)
+ raise ValueError("Invalid value supplied for 'to': " + to)
position = {'first': 0, 'last': -1}.get(to, None)
diff = {'next': 1, 'prev': 0}.get(to, 1)
count = times