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.
This commit is contained in:
parent
1d7b89fd00
commit
676e016771
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
Loading…
Reference in New Issue