Allow wheel events on focused boxes when window is inactive

This commit is contained in:
kemal
2026-08-28 02:13:51 +03:00
parent cd419558fd
commit 21e28f621e
2 changed files with 14 additions and 1 deletions
+3 -1
View File
@@ -207,7 +207,9 @@ class WheelGuard(QObject):
""" """
def eventFilter(self, box, event): def eventFilter(self, box, event):
if event.type() == QEvent.Type.Wheel and not box.hasFocus(): win = box.window()
focused = box.hasFocus() or (win is not None and win.focusWidget() is box)
if event.type() == QEvent.Type.Wheel and not focused:
# Refused rather than swallowed. An unaccepted wheel event carries # Refused rather than swallowed. An unaccepted wheel event carries
# on up the parents to the scroll area, so the page still moves. # on up the parents to the scroll area, so the page still moves.
event.ignore() event.ignore()
+11
View File
@@ -223,6 +223,17 @@ class Settings(DikteTest):
QApplication.sendEvent(box, self.wheel()) QApplication.sendEvent(box, self.wheel())
self.assertNotEqual(box.currentIndex(), before) self.assertNotEqual(box.currentIndex(), before)
def test_the_wheel_is_refused_when_another_widget_has_focus(self):
window = self.window(cfg.Config())
box = window.ui_language
other = window.corner
other.setFocus()
before = box.currentIndex()
rolled = self.wheel()
QApplication.sendEvent(box, rolled)
self.assertEqual(box.currentIndex(), before)
self.assertFalse(rolled.isAccepted())
def test_a_wrapped_label_keeps_the_room_its_lines_need(self): def test_a_wrapped_label_keeps_the_room_its_lines_need(self):
# The program path shares a row with a button, and a row is measured # The program path shares a row with a button, and a row is measured
# before its width is known: the label has to claim the second line back # before its width is known: the label has to claim the second line back