From c08881de5d8050bd07a2395f5086c50fb2e95cec Mon Sep 17 00:00:00 2001 From: Robert Jordens Date: Tue, 8 Mar 2016 16:12:38 +0100 Subject: [PATCH] gui: don't scroll experiment editor on modified wheel (closes #303) If you try to target e.g. spinbox with a ctrl- or shift-wheel to change the value and you don't aim well, the tree widget will scroll. We already have tree scroll on unmodified wheel. Let's have the modified wheel events exclusively target the smaller widgets. --- artiq/gui/experiments.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/artiq/gui/experiments.py b/artiq/gui/experiments.py index aeb4cfff4..0cb11bbe1 100644 --- a/artiq/gui/experiments.py +++ b/artiq/gui/experiments.py @@ -18,6 +18,15 @@ logger = logging.getLogger(__name__) # 2. file:@ +class _WheelFilter(QtCore.QObject): + def eventFilter(self, obj, event): + if (event.type() == QtCore.QEvent.Wheel and + event.modifiers() != QtCore.Qt.NoModifier): + event.ignore() + return True + return False + + class _ArgumentEditor(QtWidgets.QTreeWidget): def __init__(self, manager, dock, expurl): self.manager = manager @@ -38,6 +47,8 @@ class _ArgumentEditor(QtWidgets.QTreeWidget): self.setHorizontalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel) self.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel) + self.viewport().installEventFilter(_WheelFilter(self.viewport())) + self._groups = dict() self._arg_to_entry_widgetitem = dict()