From 469590d4e8fcdd8fd6b8c512a68c8f18b9f8cee0 Mon Sep 17 00:00:00 2001 From: Rok Mandeljc Date: Mon, 29 Aug 2016 14:05:19 +0200 Subject: [PATCH] TabWidget: a possible fix for #1693 - grey area under custom tabbar Attempt to fix the issue #1693 by: - setting the TabBarStyle to TabWidget in addition to TabBar - chain up SE_TabWidgetTabBar requests in TabBarStyle.subElementRect to the super() rather than self._style, in order to avoid getting adwaita-specific rect sizes instead of default ones that are also used in rendering. --- qutebrowser/mainwindow/tabwidget.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/qutebrowser/mainwindow/tabwidget.py b/qutebrowser/mainwindow/tabwidget.py index dcf289452..baeb7d620 100644 --- a/qutebrowser/mainwindow/tabwidget.py +++ b/qutebrowser/mainwindow/tabwidget.py @@ -50,6 +50,7 @@ class TabWidget(QTabWidget): def __init__(self, win_id, parent=None): super().__init__(parent) bar = TabBar(win_id) + self.setStyle(TabBarStyle(self.style())) self.setTabBar(bar) bar.tabCloseRequested.connect(self.tabCloseRequested) bar.tabMoved.connect(functools.partial( @@ -656,6 +657,12 @@ class TabBarStyle(QCommonStyle): if sr == QStyle.SE_TabBarTabText: layouts = self._tab_layout(opt) return layouts.text + elif sr == QStyle.SE_TabWidgetTabBar: + # Need to use super() because we also use super() to render + # element in drawControl(); otherwise, we may get bit by + # style differences... + rct = super().subElementRect(sr, opt, widget) + return rct else: return self._style.subElementRect(sr, opt, widget)