Merge remote-tracking branch 'origin/pr/3752'

This commit is contained in:
Florian Bruhin 2018-03-23 08:25:59 +01:00
commit e095f64eb6
2 changed files with 56 additions and 2 deletions

View File

@ -494,8 +494,8 @@ class TabBar(QTabBar):
self.iconSize().width()) + icon_padding self.iconSize().width()) + icon_padding
pinned = self._tab_pinned(index) pinned = self._tab_pinned(index)
if pinned: if not self.vertical and pinned and config.val.tabs.pinned.shrink:
# Never consider ellipsis an option for pinned tabs # Never consider ellipsis an option for horizontal pinned tabs
ellipsis = False ellipsis = False
return self._minimum_tab_size_hint_helper(self.tabText(index), return self._minimum_tab_size_hint_helper(self.tabText(index),
icon_width, ellipsis, icon_width, ellipsis,

View File

@ -61,6 +61,60 @@ class TestTabWidget:
with qtbot.waitExposed(widget): with qtbot.waitExposed(widget):
widget.show() widget.show()
# Sizing tests
def test_tab_size_same(self, widget, fake_web_tab):
"""Ensure by default, all tab sizes are the same."""
num_tabs = 10
for i in range(num_tabs):
widget.addTab(fake_web_tab(), 'foobar' + str(i))
first_size = widget.tabBar().tabSizeHint(0)
first_size_min = widget.tabBar().minimumTabSizeHint(0)
for i in range(num_tabs):
assert first_size == widget.tabBar().tabSizeHint(i)
assert first_size_min == widget.tabBar().minimumTabSizeHint(i)
@pytest.mark.parametrize("shrink_pinned", [True, False])
@pytest.mark.parametrize("vertical", [True, False])
def test_pinned_size(self, widget, fake_web_tab, config_stub,
shrink_pinned, vertical):
"""Ensure by default, pinned min sizes are forced to title.
If pinned.shrink is not true, then all tabs should be the same
If tabs are vertical, all tabs should be the same"""
num_tabs = 10
for i in range(num_tabs):
widget.addTab(fake_web_tab(), 'foobar' + str(i))
# Set pinned title format longer than unpinned
config_stub.val.tabs.title.format_pinned = "_" * 20
config_stub.val.tabs.title.format = "_" * 2
config_stub.val.tabs.pinned.shrink = shrink_pinned
if vertical:
# Use pixel width so we don't need to mock main-window
config_stub.val.tabs.width = 50
config_stub.val.tabs.position = "left"
pinned_num = [1, num_tabs - 1]
for tab in pinned_num:
widget.set_tab_pinned(widget.widget(tab), True)
first_size = widget.tabBar().tabSizeHint(0)
first_size_min = widget.tabBar().minimumTabSizeHint(0)
for i in range(num_tabs):
if i in pinned_num and shrink_pinned and not vertical:
assert (first_size.width() <
widget.tabBar().tabSizeHint(i).width())
assert (first_size_min.width() <
widget.tabBar().minimumTabSizeHint(i).width())
else:
assert first_size == widget.tabBar().tabSizeHint(i)
assert first_size_min == widget.tabBar().minimumTabSizeHint(i)
@pytest.mark.parametrize("num_tabs", [4, 10]) @pytest.mark.parametrize("num_tabs", [4, 10])
def test_update_tab_titles_benchmark(self, benchmark, widget, def test_update_tab_titles_benchmark(self, benchmark, widget,
qtbot, fake_web_tab, num_tabs): qtbot, fake_web_tab, num_tabs):