diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-10-21 10:48:46 +0200 |
|---|---|---|
| committer | Christian Tismer <tismer@stackless.com> | 2022-10-28 14:28:08 +0200 |
| commit | df87bd0d6c55e0ab11aa68f7db99337860134510 (patch) | |
| tree | a26bd7594a472691ae5506362c5911545ac2c327 /sources/pyside6/tests/signals/signal_newenum_test.py | |
| parent | cef14671536d23b45661cdb203c8da50aed149f1 (diff) | |
fix signals with new enums on Python 3.11
Signals were not aware of new enums.
Worse, the name of the metatype was changed in Python.
Added a test that simulates the example.
Change-Id: I80e1f220c387ab39e918bfc63d6bb5cab6025590
Fixes: PYSIDE-2095
Pick-to: 6.3 6.4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/pyside6/tests/signals/signal_newenum_test.py')
| -rw-r--r-- | sources/pyside6/tests/signals/signal_newenum_test.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/sources/pyside6/tests/signals/signal_newenum_test.py b/sources/pyside6/tests/signals/signal_newenum_test.py new file mode 100644 index 000000000..0027ede40 --- /dev/null +++ b/sources/pyside6/tests/signals/signal_newenum_test.py @@ -0,0 +1,61 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +import os +import sys +import unittest + +from pathlib import Path +sys.path.append(os.fspath(Path(__file__).resolve().parents[1])) +from init_paths import init_test_paths +init_test_paths(False) + +from PySide6.QtCore import QCoreApplication, QTimer, QEvent, Qt, Signal +from PySide6.QtWidgets import QApplication, QWidget +from PySide6.QtGui import QKeyEvent + + +class Window(QWidget): + test_sig1 = Signal(Qt.AlignmentFlag) + test_sig2 = Signal(Qt.AlignmentFlag, str) + + def __init__(self): + super().__init__() + + def keyPressEvent(self, e): + self.test_sig1.emit(Qt.AlignLeft) + self.test_sig2.emit(Qt.AlignLeft, "bla") + + def handler1(self, e): + print('\nhandler1', e, "type=", type(e).__name__) + self.result += 1 + + def handler2(self, e, s): + print('handler2', e, "type=", type(e).__name__, s) + self.result += 2 + + +class TestSignalNewEnum(unittest.TestCase): + + def testIt(self): + app = QApplication() + self.window = window = Window() + window.result = 0 + window.show() + + window.test_sig1.connect(window.handler1) + window.test_sig2.connect(window.handler2) + + QTimer.singleShot(0, self.sendKbdEvent) + QTimer.singleShot(100, app.quit) + app.exec() + + self.assertEqual(window.result, 3) + + def sendKbdEvent(self): + ev = QKeyEvent(QEvent.KeyPress, Qt.Key_A, Qt.NoModifier, 'a') + QCoreApplication.sendEvent(self.window, ev) + + +if __name__ == '__main__': + unittest.main() |
