Merge branch 'qutebrowser:master' into ascii-bar

This commit is contained in:
Tomasz Cebula 2022-09-22 10:38:14 +02:00 committed by GitHub
commit 08911d444c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 56 additions and 27 deletions

View File

@ -116,6 +116,8 @@ Fixed
shown, qutebrowser used to only show one message. This is now only done when the
two messages are completely equivalent (text, level, etc.) instead of doing so
when only the text matches.
- The `progress` and `backforward` statusbar widgets now stay removed if you
choose to remove them. Previously they would appear again on navigation.
[[v2.5.3]]
v2.5.3 (unreleased)

View File

@ -293,6 +293,8 @@ class StatusBar(QWidget):
self.keystring, self.prog, self.prog_ascii,
self.clock, *self._text_widgets]:
assert isinstance(widget, QWidget)
if widget in [self.prog, self.backforward]:
widget.enabled = False # type: ignore[attr-defined]
widget.hide()
self._hbox.removeWidget(widget)
self._text_widgets.clear()

View File

@ -31,55 +31,72 @@ def backforward_widget(qtbot):
return widget
@pytest.fixture
def tabs(tabbed_browser_stubs):
tabbed_browser = tabbed_browser_stubs[0]
tabbed_browser.widget.current_index = 1
return tabbed_browser
@pytest.mark.parametrize('can_go_back, can_go_forward, expected_text', [
(False, False, ''),
(True, False, '[<]'),
(False, True, '[>]'),
(True, True, '[<>]'),
])
def test_backforward_widget(backforward_widget, tabbed_browser_stubs,
fake_web_tab, can_go_back, can_go_forward,
expected_text):
def test_widget_state(backforward_widget, tabs,
fake_web_tab, can_go_back, can_go_forward,
expected_text):
"""Ensure the Backforward widget shows the correct text."""
tab = fake_web_tab(can_go_back=can_go_back, can_go_forward=can_go_forward)
tabbed_browser = tabbed_browser_stubs[0]
tabbed_browser.widget.current_index = 1
tabbed_browser.widget.tabs = [tab]
tabs.widget.tabs = [tab]
backforward_widget.enabled = True
backforward_widget.on_tab_cur_url_changed(tabbed_browser)
backforward_widget.on_tab_cur_url_changed(tabs)
assert backforward_widget.text() == expected_text
assert backforward_widget.isVisible() == bool(expected_text)
# Check that the widget stays hidden if not in the statusbar
backforward_widget.enabled = False
backforward_widget.hide()
backforward_widget.on_tab_cur_url_changed(tabbed_browser)
assert backforward_widget.isHidden()
# Check that the widget gets reset if empty.
if can_go_back and can_go_forward:
tab = fake_web_tab(can_go_back=False, can_go_forward=False)
tabbed_browser.widget.tabs = [tab]
backforward_widget.enabled = True
backforward_widget.on_tab_cur_url_changed(tabbed_browser)
assert backforward_widget.text() == ''
assert not backforward_widget.isVisible()
def test_state_changes_on_tab_change(backforward_widget, tabs, fake_web_tab):
"""Test we go invisible when switching to a tab without history."""
tab_with_history = fake_web_tab(can_go_back=True, can_go_forward=True)
tab_without_history = fake_web_tab(can_go_back=False, can_go_forward=False)
tabs.widget.tabs = [tab_with_history]
backforward_widget.enabled = True
backforward_widget.on_tab_cur_url_changed(tabs)
assert backforward_widget.isVisible()
tabs.widget.tabs = [tab_without_history]
backforward_widget.on_tab_cur_url_changed(tabs)
assert backforward_widget.text() == ''
assert not backforward_widget.isVisible()
def test_none_tab(backforward_widget, tabbed_browser_stubs, fake_web_tab):
def test_none_tab(backforward_widget, tabs, fake_web_tab):
"""Make sure nothing crashes when passing None as tab."""
tab = fake_web_tab(can_go_back=True, can_go_forward=True)
tabbed_browser = tabbed_browser_stubs[0]
tabbed_browser.widget.current_index = 1
tabbed_browser.widget.tabs = [tab]
tabs.widget.tabs = [tab]
backforward_widget.enabled = True
backforward_widget.on_tab_cur_url_changed(tabbed_browser)
backforward_widget.on_tab_cur_url_changed(tabs)
assert backforward_widget.text() == '[<>]'
assert backforward_widget.isVisible()
tabbed_browser.widget.current_index = -1
backforward_widget.on_tab_cur_url_changed(tabbed_browser)
tabs.widget.current_index = -1
backforward_widget.on_tab_cur_url_changed(tabs)
assert backforward_widget.text() == ''
assert not backforward_widget.isVisible()
def test_not_shown_when_disabled(backforward_widget, tabs, fake_web_tab):
"""The widget shouldn't get shown on an event when it's disabled."""
tab = fake_web_tab(can_go_back=True, can_go_forward=True)
tabs.widget.tabs = [tab]
backforward_widget.enabled = False
backforward_widget.on_tab_cur_url_changed(tabs)
assert not backforward_widget.isVisible()
backforward_widget.on_tab_changed(tab)
assert not backforward_widget.isVisible()

View File

@ -69,6 +69,14 @@ def test_tab_changed(fake_web_tab, progress_widget, progress, load_status,
assert actual == expected
def test_not_shown_when_disabled(progress_widget, fake_web_tab):
"""The widget shouldn't get shown on an event when it's disabled."""
tab = fake_web_tab(progress=15, load_status=usertypes.LoadStatus.loading)
progress_widget.enabled = False
progress_widget.on_tab_changed(tab)
assert not progress_widget.isVisible()
def test_progress_affecting_statusbar_height(config_stub, fake_statusbar,
progress_widget):
"""Make sure the statusbar stays the same height when progress is shown.