diff options
Diffstat (limited to 'sources/pyside6')
| -rw-r--r-- | sources/pyside6/PySide6/QtCore/typesystem_core_common.xml | 16 | ||||
| -rw-r--r-- | sources/pyside6/PySide6/glue/qtcore.cpp | 5 | ||||
| -rw-r--r-- | sources/pyside6/tests/QtCore/blocking_signals_test.py | 8 | ||||
| -rw-r--r-- | sources/pyside6/tests/QtCore/bug_686.py | 13 |
4 files changed, 38 insertions, 4 deletions
diff --git a/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml b/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml index f61eab2e6..bfbe5178e 100644 --- a/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml +++ b/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml @@ -1422,7 +1422,9 @@ </object-type> <object-type name="QMessageAuthenticationCode"/> <object-type name="QSignalBlocker"> - <add-function signature="__enter__()"/> + <add-function signature="__enter__()" return-type="QSignalBlocker"> + <inject-code file="../glue/qtcore.cpp" snippet="default-enter"/> + </add-function> <add-function signature="__exit__(PyObject*,PyObject*,PyObject*)"> <inject-code file="../glue/qtcore.cpp" snippet="qsignalblocker-unblock"/> </add-function> @@ -1443,7 +1445,9 @@ </modify-argument> </modify-function> <modify-function signature="relock()" allow-thread="yes"/> - <add-function signature="__enter__()"/> + <add-function signature="__enter__()" return-type="QReadLocker"> + <inject-code file="../glue/qtcore.cpp" snippet="default-enter"/> + </add-function> <add-function signature="__exit__(PyObject*,PyObject*,PyObject*)"> <inject-code file="../glue/qtcore.cpp" snippet="unlock"/> </add-function> @@ -1455,7 +1459,9 @@ </modify-argument> </modify-function> <modify-function signature="relock()" allow-thread="yes"/> - <add-function signature="__enter__()"/> + <add-function signature="__enter__()" return-type="QWriteLocker"> + <inject-code file="../glue/qtcore.cpp" snippet="default-enter"/> + </add-function> <add-function signature="__exit__(PyObject*,PyObject*,PyObject*)"> <inject-code file="../glue/qtcore.cpp" snippet="unlock"/> </add-function> @@ -2309,7 +2315,9 @@ <reference-count action="set"/> </modify-argument> </modify-function> - <add-function signature="__enter__()"/> + <add-function signature="__enter__()" return-type="QMutexLocker"> + <inject-code file="../glue/qtcore.cpp" snippet="default-enter"/> + </add-function> <add-function signature="__exit__(PyObject*,PyObject*,PyObject*)"> <inject-code file="../glue/qtcore.cpp" snippet="unlock"/> </add-function> diff --git a/sources/pyside6/PySide6/glue/qtcore.cpp b/sources/pyside6/PySide6/glue/qtcore.cpp index 05b4e7d2d..b73d6d2dc 100644 --- a/sources/pyside6/PySide6/glue/qtcore.cpp +++ b/sources/pyside6/PySide6/glue/qtcore.cpp @@ -471,6 +471,11 @@ Py_XDECREF(result); return !result ? -1 : 0; // @snippet qbitarray-setitem +// @snippet default-enter +Py_INCREF(%PYSELF); +pyResult = %PYSELF; +// @snippet default-enter + // @snippet qsignalblocker-unblock %CPPSELF.unblock(); // @snippet qsignalblocker-unblock diff --git a/sources/pyside6/tests/QtCore/blocking_signals_test.py b/sources/pyside6/tests/QtCore/blocking_signals_test.py index d4d59b457..b4b6c311b 100644 --- a/sources/pyside6/tests/QtCore/blocking_signals_test.py +++ b/sources/pyside6/tests/QtCore/blocking_signals_test.py @@ -72,6 +72,14 @@ class TestSignalsBlockedBasic(unittest.TestCase): self.assertTrue(obj.signalsBlocked()) self.assertTrue(not obj.signalsBlocked()) + def testContextWithAs(self): + obj = QObject() + self.assertTrue(not obj.signalsBlocked()) + with QSignalBlocker(obj) as blocker: + self.assertTrue(obj.signalsBlocked()) + self.assertEqual(type(blocker), QSignalBlocker) + self.assertTrue(not obj.signalsBlocked()) + class TestSignalsBlocked(unittest.TestCase): '''Test case to check if the signals are really blocked''' diff --git a/sources/pyside6/tests/QtCore/bug_686.py b/sources/pyside6/tests/QtCore/bug_686.py index 6e78e7f80..2437d101e 100644 --- a/sources/pyside6/tests/QtCore/bug_686.py +++ b/sources/pyside6/tests/QtCore/bug_686.py @@ -125,6 +125,19 @@ class TestQMutex (unittest.TestCase): self.assertTrue(thread.wait(2000)) self.assertTrue(thread.canQuit) + def testWithAsLocker(self): + lock = QReadWriteLock() + with QReadLocker(lock) as locker: + self.assertTrue(isinstance(locker, QReadLocker)) + with QWriteLocker(lock) as locker: + self.assertTrue(isinstance(locker, QWriteLocker)) + mutex = QMutex() + with QMutexLocker(mutex) as locker: + self.assertTrue(isinstance(locker, QMutexLocker)) + with self.assertRaises(TypeError): + with QMutexLocker(lock) as locker: + pass + if __name__ == '__main__': unittest.main() |
