summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Kamat <jaygkamat@gmail.com>2017-06-28 21:15:49 -0700
committerJay Kamat <jaygkamat@gmail.com>2017-06-28 22:22:33 -0700
commit302961a86aa0ba2a2998e8c21e0319f4f4a91f96 (patch)
treecd4fe9aa834b15c10c193b3cba7b058cb3856bc6
parentf136f78802db09a7de516f600f61699adb9c8b73 (diff)
downloadqutebrowser-302961a86aa0ba2a2998e8c21e0319f4f4a91f96.tar.gz
qutebrowser-302961a86aa0ba2a2998e8c21e0319f4f4a91f96.zip
Refactor set_tab_pinned to take a tab widget.
See #2759
-rw-r--r--qutebrowser/browser/commands.py9
-rw-r--r--qutebrowser/mainwindow/tabbedbrowser.py2
-rw-r--r--qutebrowser/mainwindow/tabwidget.py9
-rw-r--r--qutebrowser/misc/sessions.py2
4 files changed, 14 insertions, 8 deletions
diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py
index 3d8516fe2..54ee0d53e 100644
--- a/qutebrowser/browser/commands.py
+++ b/qutebrowser/browser/commands.py
@@ -282,7 +282,12 @@ class CommandDispatcher:
to_pin = not tab.data.pinned
tab_index = self._current_index() if count is None else count - 1
cmdutils.check_overflow(tab_index + 1, 'int')
- self._tabbed_browser.set_tab_pinned(tab_index, to_pin)
+ tab = self._cntwidget(count)
+
+ if tab is None:
+ raise cmdexc.CommandError("Unable to find tab '{}'.".format(count))
+
+ self._tabbed_browser.set_tab_pinned(tab, to_pin)
@cmdutils.register(instance='command-dispatcher', name='open',
maxsplit=0, scope='window')
@@ -515,7 +520,7 @@ class CommandDispatcher:
newtab.data.keep_icon = True
newtab.history.deserialize(history)
newtab.zoom.set_factor(curtab.zoom.factor())
- new_tabbed_browser.set_tab_pinned(idx, curtab.data.pinned)
+ new_tabbed_browser.set_tab_pinned(newtab, curtab.data.pinned)
return newtab
@cmdutils.register(instance='command-dispatcher', scope='window')
diff --git a/qutebrowser/mainwindow/tabbedbrowser.py b/qutebrowser/mainwindow/tabbedbrowser.py
index e0468330e..94508ab63 100644
--- a/qutebrowser/mainwindow/tabbedbrowser.py
+++ b/qutebrowser/mainwindow/tabbedbrowser.py
@@ -342,7 +342,7 @@ class TabbedBrowser(tabwidget.TabWidget):
newtab = self.tabopen(url, background=False, idx=idx)
newtab.history.deserialize(history_data)
- self.set_tab_pinned(idx, pinned)
+ self.set_tab_pinned(newtab, pinned)
@pyqtSlot('QUrl', bool)
def openurl(self, url, newtab):
diff --git a/qutebrowser/mainwindow/tabwidget.py b/qutebrowser/mainwindow/tabwidget.py
index 2c4eb6eab..c7823f84e 100644
--- a/qutebrowser/mainwindow/tabwidget.py
+++ b/qutebrowser/mainwindow/tabwidget.py
@@ -26,7 +26,7 @@ from PyQt5.QtCore import (pyqtSignal, pyqtSlot, Qt, QSize, QRect, QPoint,
QTimer, QUrl)
from PyQt5.QtWidgets import (QTabWidget, QTabBar, QSizePolicy, QCommonStyle,
QStyle, QStylePainter, QStyleOptionTab,
- QStyleFactory)
+ QStyleFactory, QWidget)
from PyQt5.QtGui import QIcon, QPalette, QColor
from qutebrowser.utils import qtutils, objreg, utils, usertypes, log
@@ -94,17 +94,18 @@ class TabWidget(QTabWidget):
bar.set_tab_data(idx, 'indicator-color', color)
bar.update(bar.tabRect(idx))
- def set_tab_pinned(self, idx, pinned, *, loading=False):
+ def set_tab_pinned(self, tab: QWidget,
+ pinned: bool, *, loading: bool = False) -> None:
"""Set the tab status as pinned.
Args:
- idx: The tab index.
+ tab: The tab to pin
pinned: Pinned tab state to set.
loading: Whether to ignore current data state when
counting pinned_count.
"""
bar = self.tabBar()
- tab = self.widget(idx)
+ idx = self.indexOf(tab)
# Only modify pinned_count if we had a change
# always modify pinned_count if we are loading
diff --git a/qutebrowser/misc/sessions.py b/qutebrowser/misc/sessions.py
index 5ce4ee66d..26656e1ee 100644
--- a/qutebrowser/misc/sessions.py
+++ b/qutebrowser/misc/sessions.py
@@ -406,7 +406,7 @@ class SessionManager(QObject):
tab_to_focus = i
if new_tab.data.pinned:
tabbed_browser.set_tab_pinned(
- i, new_tab.data.pinned, loading=True)
+ new_tab, new_tab.data.pinned, loading=True)
if tab_to_focus is not None:
tabbed_browser.setCurrentIndex(tab_to_focus)
if win.get('active', False):