diff --git a/novelwriter/extensions/wheeleventfilter.py b/novelwriter/extensions/wheeleventfilter.py index 75340cfa..220fa324 100644 --- a/novelwriter/extensions/wheeleventfilter.py +++ b/novelwriter/extensions/wheeleventfilter.py @@ -3,7 +3,7 @@ novelWriter – Custom Object: Wheel Event Filter =============================================== File History: -Created: 2023-08-31 [2.1b2] +Created: 2023-08-31 [2.1rc1] This file is a part of novelWriter Copyright 2018–2023, Veronica Berglyd Olsen diff --git a/novelwriter/gui/doceditor.py b/novelwriter/gui/doceditor.py index c10765aa..c93db0a8 100644 --- a/novelwriter/gui/doceditor.py +++ b/novelwriter/gui/doceditor.py @@ -180,8 +180,8 @@ class GuiDocEditor(QTextEdit): self.wCounterSel.signals.countsReady.connect(self._updateSelCounts) # Install Event Filter for Mouse Wheel - self.wheelEventForwarder = WheelEventFilter(self) - self.installEventFilter(self.wheelEventForwarder) + self.wheelEventFilter = WheelEventFilter(self) + self.installEventFilter(self.wheelEventFilter) # Finalise self.updateSyntaxColours() diff --git a/novelwriter/gui/docviewer.py b/novelwriter/gui/docviewer.py index 91992c00..ca835ea6 100644 --- a/novelwriter/gui/docviewer.py +++ b/novelwriter/gui/docviewer.py @@ -87,8 +87,8 @@ class GuiDocViewer(QTextBrowser): self.anchorClicked.connect(self._linkClicked) # Install Event Filter for Mouse Wheel - self.wheelEventForwarder = WheelEventFilter(self) - self.installEventFilter(self.wheelEventForwarder) + self.wheelEventFilter = WheelEventFilter(self) + self.installEventFilter(self.wheelEventFilter) # Context Menu self.setContextMenuPolicy(Qt.CustomContextMenu) diff --git a/novelwriter/shared.py b/novelwriter/shared.py index 02b70150..2a186a75 100644 --- a/novelwriter/shared.py +++ b/novelwriter/shared.py @@ -3,7 +3,7 @@ novelWriter – Shared Data Class =============================== File History: -Created: 2023-08-10 [2.1b2] +Created: 2023-08-10 [2.1rc1] This file is a part of novelWriter Copyright 2018–2023, Veronica Berglyd Olsen diff --git a/tests/test_ext/test_ext_wheeleventfilter.py b/tests/test_ext/test_ext_wheeleventfilter.py new file mode 100644 index 00000000..1120a237 --- /dev/null +++ b/tests/test_ext/test_ext_wheeleventfilter.py @@ -0,0 +1,67 @@ +""" +novelWriter – Wheel Event Filter Tester +======================================= + +This file is a part of novelWriter +Copyright 2018–2023, Veronica Berglyd Olsen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +""" + +from PyQt5.QtCore import QEvent, QObject, QPoint, Qt +import pytest + +from PyQt5.QtGui import QKeyEvent, QWheelEvent +from PyQt5.QtWidgets import QWidget + +from novelwriter.extensions.wheeleventfilter import WheelEventFilter + + +class MockWidget(QWidget): + + def __init__(self): + super().__init__(None) + self.count = 0 + return + + def wheelEvent(self, event: QWheelEvent) -> None: + self.count += 1 + return + + +@pytest.mark.gui +def testExtWheelEventFilter_Main(): + """Test the WheelEventFilter class.""" + obj = QObject() + widget = MockWidget() + eFilter = WheelEventFilter(widget) + assert widget.count == 0 + + # Sending a key event does nothing + event = QKeyEvent(QEvent.KeyPress, 1, Qt.ShiftModifier) + eFilter.eventFilter(obj, event) + assert widget.count == 0 + + # Sending a mouse wheel event forwards it + pos = QPoint(0, 0) + event = QWheelEvent(pos, pos, pos, pos, Qt.NoButton, Qt.NoModifier, Qt.NoScrollPhase, False) + eFilter.eventFilter(obj, event) + assert widget.count == 1 + + # But ignore if we're locked + eFilter._locked = True + eFilter.eventFilter(obj, event) + assert widget.count == 1 + +# END Test testExtWheelEventFilter_Main