From bf32c544a26d95c807b8a39fa7daa3c05af6c7d6 Mon Sep 17 00:00:00 2001 From: Daryl Finlay Date: Fri, 10 Jun 2016 23:36:43 +0100 Subject: [PATCH] Refactor tab and window title update methods --- qutebrowser/mainwindow/tabbedbrowser.py | 25 +----------------- qutebrowser/mainwindow/tabwidget.py | 35 ++++++++++++++++--------- 2 files changed, 23 insertions(+), 37 deletions(-) diff --git a/qutebrowser/mainwindow/tabbedbrowser.py b/qutebrowser/mainwindow/tabbedbrowser.py index df5457a7a..45508d051 100644 --- a/qutebrowser/mainwindow/tabbedbrowser.py +++ b/qutebrowser/mainwindow/tabbedbrowser.py @@ -161,31 +161,8 @@ class TabbedBrowser(tabwidget.TabWidget): # (e.g. last tab removed) log.webview.debug("Not updating window title because index is -1") return - tabtitle = self.page_title(idx) - widget = self.widget(idx) - - fields = {} - if widget.load_status == webview.LoadStatus.loading: - fields['perc'] = '[{}%] '.format(widget.progress) - else: - fields['perc'] = '' - fields['perc_raw'] = widget.progress - fields['title'] = tabtitle - fields['title_sep'] = ' - ' if tabtitle else '' + fields = self.get_tab_fields(idx) fields['id'] = self._win_id - y = widget.scroll_pos[1] - if y <= 0: - scroll_pos = 'top' - elif y >= 100: - scroll_pos = 'bot' - else: - scroll_pos = '{:2}%'.format(y) - - fields['scroll_pos'] = scroll_pos - try: - fields['host'] = self.current_url().host() - except qtutils.QtValueError: - fields['host'] = '' fmt = config.get('ui', 'window-title-format') self.window().setWindowTitle(fmt.format(**fields)) diff --git a/qutebrowser/mainwindow/tabwidget.py b/qutebrowser/mainwindow/tabwidget.py index 22f928059..ec9fd7fcb 100644 --- a/qutebrowser/mainwindow/tabwidget.py +++ b/qutebrowser/mainwindow/tabwidget.py @@ -99,19 +99,34 @@ class TabWidget(QTabWidget): def update_tab_title(self, idx): """Update the tab text for the given tab.""" + fields = self.get_tab_fields(idx) + fields['title'] = fields['title'].replace('&', '&&') + fields['index'] = idx + 1 + + fmt = config.get('tabs', 'title-format') + self.tabBar().setTabText(idx, fmt.format(**fields)) + + def get_tab_fields(self, idx): + """Get the tab field data.""" widget = self.widget(idx) - page_title = self.page_title(idx).replace('&', '&&') + page_title = self.page_title(idx) fields = {} + fields['id'] = widget.tab_id + fields['title'] = page_title + fields['title_sep'] = ' - ' if page_title else '' + fields['perc_raw'] = widget.progress + if widget.load_status == webview.LoadStatus.loading: fields['perc'] = '[{}%] '.format(widget.progress) else: fields['perc'] = '' - fields['perc_raw'] = widget.progress - fields['title'] = page_title - fields['index'] = idx + 1 - fields['id'] = widget.tab_id - fields['title_sep'] = ' - ' if page_title else '' + + try: + fields['host'] = self.tab_url(idx).host() + except qtutils.QtValueError: + fields['host'] = '' + y = widget.scroll_pos[1] if y <= 0: scroll_pos = 'top' @@ -121,13 +136,7 @@ class TabWidget(QTabWidget): scroll_pos = '{:2}%'.format(y) fields['scroll_pos'] = scroll_pos - try: - fields['host'] = self.tab_url(idx).host() - except qtutils.QtValueError: - fields['host'] = '' - - fmt = config.get('tabs', 'title-format') - self.tabBar().setTabText(idx, fmt.format(**fields)) + return fields @config.change_filter('tabs', 'title-format') def update_tab_titles(self):