From 66eb330a0a481cdd77820492c4745b6ead5f05eb Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 25 Apr 2017 21:40:28 +0200 Subject: [PATCH] Always base tabbar on Fusion style. Fixes crashes with qt5ct. Fixes #2477. Fixes #1554. --- CHANGELOG.asciidoc | 1 + qutebrowser/mainwindow/tabwidget.py | 17 ++++++----------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index b75d20c4a..0fa268d02 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -65,6 +65,7 @@ Fixed - Crash when using `:debug-log-filter` when `--filter` wasn't given on startup. - Crash with some invalid setting values - Various rare crashes +- Various styling issues with the tabbar and a crash with qt5ct v0.10.1 ------- diff --git a/qutebrowser/mainwindow/tabwidget.py b/qutebrowser/mainwindow/tabwidget.py index f6ed0a8d1..6acaf235a 100644 --- a/qutebrowser/mainwindow/tabwidget.py +++ b/qutebrowser/mainwindow/tabwidget.py @@ -24,7 +24,8 @@ import functools from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QSize, QRect, QTimer, QUrl from PyQt5.QtWidgets import (QTabWidget, QTabBar, QSizePolicy, QCommonStyle, - QStyle, QStylePainter, QStyleOptionTab) + QStyle, QStylePainter, QStyleOptionTab, + QStyleFactory) from PyQt5.QtGui import QIcon, QPalette, QColor from qutebrowser.utils import qtutils, objreg, utils, usertypes, log @@ -51,7 +52,7 @@ class TabWidget(QTabWidget): def __init__(self, win_id, parent=None): super().__init__(parent) bar = TabBar(win_id) - self.setStyle(TabBarStyle(self.style())) + self.setStyle(TabBarStyle()) self.setTabBar(bar) bar.tabCloseRequested.connect(self.tabCloseRequested) bar.tabMoved.connect(functools.partial( @@ -269,7 +270,7 @@ class TabBar(QTabBar): def __init__(self, win_id, parent=None): super().__init__(parent) self._win_id = win_id - self.setStyle(TabBarStyle(self.style())) + self.setStyle(TabBarStyle()) self.set_font() config_obj = objreg.get('config') config_obj.changed.connect(self.set_font) @@ -554,20 +555,14 @@ class TabBarStyle(QCommonStyle): http://stackoverflow.com/a/17294081 https://code.google.com/p/makehuman/source/browse/trunk/makehuman/lib/qtgui.py - - Attributes: - _style: The base/"parent" style. """ - def __init__(self, style): + def __init__(self): """Initialize all functions we're not overriding. This simply calls the corresponding function in self._style. - - Args: - style: The base/"parent" style. """ - self._style = style + self._style = QStyleFactory.create('Fusion') for method in ['drawComplexControl', 'drawItemPixmap', 'generatedIconPixmap', 'hitTestComplexControl', 'itemPixmapRect', 'itemTextRect', 'polish', 'styleHint',