diff options
author | Florian Bruhin <me@the-compiler.org> | 2022-06-14 16:51:58 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2022-06-14 17:05:46 +0200 |
commit | 676e01677183825d19107d3b2fbf1bb2c0684ede (patch) | |
tree | a1ae1298c96b343decea1546cea05356c5545052 | |
parent | 1d7b89fd0038198548c0a335d2d8676e8c5e0d9d (diff) | |
download | qutebrowser-676e01677183825d19107d3b2fbf1bb2c0684ede.tar.gz qutebrowser-676e01677183825d19107d3b2fbf1bb2c0684ede.zip |
Only replace the exact same message
If we have a error message followed by an info message with the same text, they
should both be shown, not replaced automatically.
-rw-r--r-- | qutebrowser/mainwindow/messageview.py | 8 | ||||
-rw-r--r-- | tests/unit/mainwindow/test_messageview.py | 42 |
2 files changed, 41 insertions, 9 deletions
diff --git a/qutebrowser/mainwindow/messageview.py b/qutebrowser/mainwindow/messageview.py index 752cc9db7..b3df0211a 100644 --- a/qutebrowser/mainwindow/messageview.py +++ b/qutebrowser/mainwindow/messageview.py @@ -120,7 +120,7 @@ class MessageView(QWidget): self._clear_timer.timeout.connect(self.clear_messages) config.instance.changed.connect(self._set_clear_timer_interval) - self._last_text = None + self._last_info = None @config.change_filter('messages.timeout') def _set_clear_timer_interval(self): @@ -142,14 +142,14 @@ class MessageView(QWidget): for widget in self._messages: self._remove_message(widget) self._messages = [] - self._last_text = None + self._last_info = None self.hide() self._clear_timer.stop() @pyqtSlot(message.MessageInfo) def show_message(self, info: message.MessageInfo) -> None: """Show the given message with the given MessageLevel.""" - if info.text == self._last_text: + if info == self._last_info: return if info.replace is not None: @@ -164,7 +164,7 @@ class MessageView(QWidget): self._vbox.addWidget(widget) widget.show() self._messages.append(widget) - self._last_text = info.text + self._last_info = info self.show() self.update_geometry.emit() if config.val.messages.timeout != 0: diff --git a/tests/unit/mainwindow/test_messageview.py b/tests/unit/mainwindow/test_messageview.py index 32bd638c7..5ba0e4ffc 100644 --- a/tests/unit/mainwindow/test_messageview.py +++ b/tests/unit/mainwindow/test_messageview.py @@ -122,11 +122,43 @@ def test_rich_text(view, qtbot, rich, higher, expected_format, replace): assert height2 == height1 -def test_show_message_twice(view): - """Show the same message twice -> only one should be shown.""" - view.show_message(message.MessageInfo(usertypes.MessageLevel.info, 'test')) - view.show_message(message.MessageInfo(usertypes.MessageLevel.info, 'test')) - assert len(view._messages) == 1 +@pytest.mark.parametrize("info1, info2, count", [ + # same + ( + message.MessageInfo(usertypes.MessageLevel.info, 'test'), + message.MessageInfo(usertypes.MessageLevel.info, 'test'), + 1, + ), + # different text + ( + message.MessageInfo(usertypes.MessageLevel.info, 'test'), + message.MessageInfo(usertypes.MessageLevel.info, 'test2'), + 2, + ), + # different level + ( + message.MessageInfo(usertypes.MessageLevel.info, 'test'), + message.MessageInfo(usertypes.MessageLevel.error, 'test'), + 2, + ), + # different rich text + ( + message.MessageInfo(usertypes.MessageLevel.info, 'test', rich=True), + message.MessageInfo(usertypes.MessageLevel.info, 'test', rich=False), + 2, + ), + # different replaces + ( + message.MessageInfo(usertypes.MessageLevel.info, 'test'), + message.MessageInfo(usertypes.MessageLevel.info, 'test', replace='test'), + 2, + ), +]) +def test_show_message_twice(view, info1, info2, count): + """Show the exact same message twice -> only one should be shown.""" + view.show_message(info1) + view.show_message(info2) + assert len(view._messages) == count def test_show_message_twice_after_first_disappears(qtbot, view): |