Use a namedtuple for _tab_layout.
This commit is contained in:
parent
754c31850b
commit
f5725ec11e
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
"""The tab widget used for TabbedBrowser from browser.py."""
|
"""The tab widget used for TabbedBrowser from browser.py."""
|
||||||
|
|
||||||
|
import collections
|
||||||
import functools
|
import functools
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QSize, QRect, QPoint, QTimer
|
from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QSize, QRect, QPoint, QTimer
|
||||||
@ -491,6 +492,10 @@ class TabBar(QTabBar):
|
|||||||
tabbed_browser.wheelEvent(e)
|
tabbed_browser.wheelEvent(e)
|
||||||
|
|
||||||
|
|
||||||
|
# Used by TabBarStyle._tab_layout().
|
||||||
|
Layouts = collections.namedtuple('Layouts', ['text', 'icon'])
|
||||||
|
|
||||||
|
|
||||||
class TabBarStyle(QCommonStyle):
|
class TabBarStyle(QCommonStyle):
|
||||||
|
|
||||||
"""Qt style used by TabBar to fix some issues with the default one.
|
"""Qt style used by TabBar to fix some issues with the default one.
|
||||||
@ -559,17 +564,17 @@ class TabBarStyle(QCommonStyle):
|
|||||||
# any sophisticated drawing.
|
# any sophisticated drawing.
|
||||||
super().drawControl(QStyle.CE_TabBarTabShape, opt, p, widget)
|
super().drawControl(QStyle.CE_TabBarTabShape, opt, p, widget)
|
||||||
elif element == QStyle.CE_TabBarTabLabel:
|
elif element == QStyle.CE_TabBarTabLabel:
|
||||||
text_rect, icon_rect = self._tab_layout(opt)
|
layouts = self._tab_layout(opt)
|
||||||
if not opt.icon.isNull():
|
if not opt.icon.isNull():
|
||||||
qtutils.ensure_valid(icon_rect)
|
qtutils.ensure_valid(layouts.icon)
|
||||||
icon_mode = (QIcon.Normal if opt.state & QStyle.State_Enabled
|
icon_mode = (QIcon.Normal if opt.state & QStyle.State_Enabled
|
||||||
else QIcon.Disabled)
|
else QIcon.Disabled)
|
||||||
icon_state = (QIcon.On if opt.state & QStyle.State_Selected
|
icon_state = (QIcon.On if opt.state & QStyle.State_Selected
|
||||||
else QIcon.Off)
|
else QIcon.Off)
|
||||||
icon = opt.icon.pixmap(opt.iconSize, icon_mode, icon_state)
|
icon = opt.icon.pixmap(opt.iconSize, icon_mode, icon_state)
|
||||||
p.drawPixmap(icon_rect.x(), icon_rect.y(), icon)
|
p.drawPixmap(layouts.icon.x(), layouts.icon.y(), icon)
|
||||||
alignment = Qt.AlignLeft | Qt.AlignVCenter | Qt.TextHideMnemonic
|
alignment = Qt.AlignLeft | Qt.AlignVCenter | Qt.TextHideMnemonic
|
||||||
self._style.drawItemText(p, text_rect, alignment, opt.palette,
|
self._style.drawItemText(p, layouts.text, alignment, opt.palette,
|
||||||
opt.state & QStyle.State_Enabled,
|
opt.state & QStyle.State_Enabled,
|
||||||
opt.text, QPalette.WindowText)
|
opt.text, QPalette.WindowText)
|
||||||
else:
|
else:
|
||||||
@ -610,8 +615,8 @@ class TabBarStyle(QCommonStyle):
|
|||||||
A QRect.
|
A QRect.
|
||||||
"""
|
"""
|
||||||
if sr == QStyle.SE_TabBarTabText:
|
if sr == QStyle.SE_TabBarTabText:
|
||||||
text_rect, _icon_rect = self._tab_layout(opt)
|
layouts = self._tab_layout(opt)
|
||||||
return text_rect
|
return layouts.text
|
||||||
else:
|
else:
|
||||||
return self._style.subElementRect(sr, opt, widget)
|
return self._style.subElementRect(sr, opt, widget)
|
||||||
|
|
||||||
@ -626,7 +631,7 @@ class TabBarStyle(QCommonStyle):
|
|||||||
opt: QStyleOptionTab
|
opt: QStyleOptionTab
|
||||||
|
|
||||||
Return:
|
Return:
|
||||||
A (text_rect, icon_rect) tuple (both QRects).
|
A Layout namedtuple with two QRects.
|
||||||
"""
|
"""
|
||||||
padding = config.get('tabs', 'padding')
|
padding = config.get('tabs', 'padding')
|
||||||
icon_padding = self.pixelMetric(PixelMetrics.icon_padding, opt)
|
icon_padding = self.pixelMetric(PixelMetrics.icon_padding, opt)
|
||||||
@ -643,7 +648,7 @@ class TabBarStyle(QCommonStyle):
|
|||||||
icon_rect = self._get_icon_rect(opt, text_rect)
|
icon_rect = self._get_icon_rect(opt, text_rect)
|
||||||
text_rect.adjust(icon_rect.width() + icon_padding, 0, 0, 0)
|
text_rect.adjust(icon_rect.width() + icon_padding, 0, 0, 0)
|
||||||
text_rect = self._style.visualRect(opt.direction, opt.rect, text_rect)
|
text_rect = self._style.visualRect(opt.direction, opt.rect, text_rect)
|
||||||
return (text_rect, icon_rect)
|
return Layouts(text=text_rect, icon=icon_rect)
|
||||||
|
|
||||||
def _get_icon_rect(self, opt, text_rect):
|
def _get_icon_rect(self, opt, text_rect):
|
||||||
"""Get a QRect for the icon to draw.
|
"""Get a QRect for the icon to draw.
|
||||||
|
Loading…
Reference in New Issue
Block a user