From 87c4c143bfbfcdde5e6d78bf99c83a279db85cbb Mon Sep 17 00:00:00 2001 From: pkill9 Date: Fri, 10 Mar 2017 17:02:13 +0000 Subject: [PATCH 1/6] Clear notification messages in a window when they're clicked. --- qutebrowser/config/configdata.py | 4 ++++ qutebrowser/mainwindow/messageview.py | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/qutebrowser/config/configdata.py b/qutebrowser/config/configdata.py index 32ff9268e..c6404391c 100644 --- a/qutebrowser/config/configdata.py +++ b/qutebrowser/config/configdata.py @@ -407,6 +407,10 @@ def data(readonly=False): SettingValue(typ.Bool(), 'true'), "Show a filebrowser in upload/download prompts."), + ('clear-messages-on-click', + SettingValue(typ.Bool(), 'false'), + "Whether to clear message notifications when they are clicked."), + readonly=readonly )), diff --git a/qutebrowser/mainwindow/messageview.py b/qutebrowser/mainwindow/messageview.py index 6565a2a44..bbdc8cacd 100644 --- a/qutebrowser/mainwindow/messageview.py +++ b/qutebrowser/mainwindow/messageview.py @@ -130,3 +130,8 @@ class MessageView(QWidget): self._last_text = text self.show() self.update_geometry.emit() + + def mousePressEvent(self, e): + if (config.get('ui', 'clear-messages-on-click') and + e.button() in [Qt.LeftButton, Qt.RightButton]): + self.clear_messages() From b1771a13c9b85aedb61038c0cd63a00f11762acb Mon Sep 17 00:00:00 2001 From: pkill9 Date: Sun, 12 Mar 2017 16:48:57 +0000 Subject: [PATCH 2/6] Removed setting. --- qutebrowser/config/configdata.py | 4 ---- qutebrowser/mainwindow/messageview.py | 3 +-- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/qutebrowser/config/configdata.py b/qutebrowser/config/configdata.py index c6404391c..32ff9268e 100644 --- a/qutebrowser/config/configdata.py +++ b/qutebrowser/config/configdata.py @@ -407,10 +407,6 @@ def data(readonly=False): SettingValue(typ.Bool(), 'true'), "Show a filebrowser in upload/download prompts."), - ('clear-messages-on-click', - SettingValue(typ.Bool(), 'false'), - "Whether to clear message notifications when they are clicked."), - readonly=readonly )), diff --git a/qutebrowser/mainwindow/messageview.py b/qutebrowser/mainwindow/messageview.py index bbdc8cacd..e29a05e73 100644 --- a/qutebrowser/mainwindow/messageview.py +++ b/qutebrowser/mainwindow/messageview.py @@ -132,6 +132,5 @@ class MessageView(QWidget): self.update_geometry.emit() def mousePressEvent(self, e): - if (config.get('ui', 'clear-messages-on-click') and - e.button() in [Qt.LeftButton, Qt.RightButton]): + if e.button() in [Qt.LeftButton, Qt.RightButton]: self.clear_messages() From 67034273f7a5164354c396437c2a6c0dbab51158 Mon Sep 17 00:00:00 2001 From: pkill9 Date: Sat, 25 Mar 2017 15:58:37 +0000 Subject: [PATCH 3/6] Move criteria into a list and add middle mouse button. --- qutebrowser/mainwindow/messageview.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/qutebrowser/mainwindow/messageview.py b/qutebrowser/mainwindow/messageview.py index e29a05e73..35505fd44 100644 --- a/qutebrowser/mainwindow/messageview.py +++ b/qutebrowser/mainwindow/messageview.py @@ -132,5 +132,7 @@ class MessageView(QWidget): self.update_geometry.emit() def mousePressEvent(self, e): - if e.button() in [Qt.LeftButton, Qt.RightButton]: + criteria = [Qt.LeftButton, Qt.MiddleButton, Qt.RightButton] + + if e.button() in criteria: self.clear_messages() From bf2493c1c4cdcce84eeaa36af28a32b547628490 Mon Sep 17 00:00:00 2001 From: pkill9 Date: Sat, 25 Mar 2017 17:41:06 +0000 Subject: [PATCH 4/6] Add test. --- tests/unit/mainwindow/test_messageview.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/unit/mainwindow/test_messageview.py b/tests/unit/mainwindow/test_messageview.py index 740c090b6..0d576c391 100644 --- a/tests/unit/mainwindow/test_messageview.py +++ b/tests/unit/mainwindow/test_messageview.py @@ -19,6 +19,9 @@ import pytest +from PyQt5.QtTest import QTest +from PyQt5.QtCore import Qt + from qutebrowser.mainwindow import messageview from qutebrowser.utils import usertypes @@ -114,3 +117,18 @@ def test_replaced_messages(view, replace1, replace2, length): view.show_message(usertypes.MessageLevel.info, 'test', replace=replace1) view.show_message(usertypes.MessageLevel.info, 'test 2', replace=replace2) assert len(view._messages) == length + + +def test_click_messages(qtbot, view): + """Messages should dissappear when we click on them.""" + view.show_message(usertypes.MessageLevel.info, 'test mouse left click') + QTest.mousePress(view, Qt.LeftButton) + assert not view._messages + + view.show_message(usertypes.MessageLevel.info, 'test mouse middle click') + QTest.mousePress(view, Qt.MiddleButton) + assert not view._messages + + view.show_message(usertypes.MessageLevel.info, 'test mouse right click') + QTest.mousePress(view, Qt.RightButton) + assert not view._messages From 5e1c530d7123cc89854a37781bfd0e081897ee61 Mon Sep 17 00:00:00 2001 From: pkill9 Date: Sat, 25 Mar 2017 21:03:21 +0000 Subject: [PATCH 5/6] Add docstring to MessageView.mousePressEvent --- qutebrowser/mainwindow/messageview.py | 1 + 1 file changed, 1 insertion(+) diff --git a/qutebrowser/mainwindow/messageview.py b/qutebrowser/mainwindow/messageview.py index 35505fd44..4a91276df 100644 --- a/qutebrowser/mainwindow/messageview.py +++ b/qutebrowser/mainwindow/messageview.py @@ -132,6 +132,7 @@ class MessageView(QWidget): self.update_geometry.emit() def mousePressEvent(self, e): + """Clear messages when they are clicked on.""" criteria = [Qt.LeftButton, Qt.MiddleButton, Qt.RightButton] if e.button() in criteria: From 13677d3563dbd01ae188a2b1a79c7dd840a5dc5e Mon Sep 17 00:00:00 2001 From: pkill9 Date: Sat, 25 Mar 2017 21:16:51 +0000 Subject: [PATCH 6/6] Add mouse back button to click test. --- tests/unit/mainwindow/test_messageview.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/unit/mainwindow/test_messageview.py b/tests/unit/mainwindow/test_messageview.py index 0d576c391..15160f45c 100644 --- a/tests/unit/mainwindow/test_messageview.py +++ b/tests/unit/mainwindow/test_messageview.py @@ -132,3 +132,8 @@ def test_click_messages(qtbot, view): view.show_message(usertypes.MessageLevel.info, 'test mouse right click') QTest.mousePress(view, Qt.RightButton) assert not view._messages + + # Test mouse back button - This shouldn't clear messages. + view.show_message(usertypes.MessageLevel.info, 'test mouse back button') + QTest.mousePress(view, Qt.BackButton) + assert len(view._messages) == 1