summaryrefslogtreecommitdiff
path: root/ui/main_window.py
diff options
context:
space:
mode:
Diffstat (limited to 'ui/main_window.py')
-rw-r--r--ui/main_window.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/ui/main_window.py b/ui/main_window.py
index ec0f39d..483ca49 100644
--- a/ui/main_window.py
+++ b/ui/main_window.py
@@ -10,10 +10,23 @@ from PyQt6.QtWidgets import (
QMainWindow, QWidget, QHBoxLayout, QVBoxLayout,
QSplitter, QStatusBar, QLabel, QPushButton,
QToolBar, QSizePolicy, QApplication, QFrame,
+ QAbstractSpinBox, QComboBox,
)
-from PyQt6.QtCore import Qt, QTimer, pyqtSlot
+from PyQt6.QtCore import Qt, QTimer, QObject, QEvent, pyqtSlot
import os
+
+class _WheelBlocker(QObject):
+ """App-level event filter: blocks accidental scroll-wheel changes on
+ spin boxes, combo boxes and sliders that don't have keyboard focus."""
+ def eventFilter(self, obj, event):
+ if event.type() == QEvent.Type.Wheel:
+ if isinstance(obj, (QAbstractSpinBox, QComboBox)):
+ if not obj.hasFocus():
+ event.ignore()
+ return True
+ return super().eventFilter(obj, event)
+
from devices.analog_input import AnalogInputDevice
from devices.digital_io import DigitalIODevice
from devices.serial_device import SerialDevice
@@ -52,6 +65,9 @@ class MainWindow(QMainWindow):
self._win_plot = None
self._win_settings = None
+ self._wheel_blocker = _WheelBlocker(self)
+ QApplication.instance().installEventFilter(self._wheel_blocker)
+
self._init_demo_devices()
self._build_ui()
self._connect_signals()
@@ -345,6 +361,7 @@ class MainWindow(QMainWindow):
def _clear_history(self):
self.engine.clear_history()
+ self.processor.clear_history()
self._chart.refresh()
self._status.setText("History cleared.")