diff options
Diffstat (limited to 'sources/pyside6/PySide6')
| -rw-r--r-- | sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml | 6 | ||||
| -rw-r--r-- | sources/pyside6/PySide6/glue/qtgui.cpp | 14 |
2 files changed, 20 insertions, 0 deletions
diff --git a/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml b/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml index 82098e01a..caecca7bf 100644 --- a/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml +++ b/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml @@ -444,6 +444,12 @@ </value-type> <value-type name="QRegion" > <enum-type name="RegionType"/> + <add-function signature="__len__"> + <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qregion-len"/> + </add-function> + <add-function signature="__getitem__"> + <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qregion-getitem"/> + </add-function> <!-- ### This operator does not make sense in Python. --> <modify-function signature="operator&=(QRegion)" remove="all"/> <modify-function signature="operator&=(QRect)" remove="all"/> diff --git a/sources/pyside6/PySide6/glue/qtgui.cpp b/sources/pyside6/PySide6/glue/qtgui.cpp index 39d5bf0ae..5630406a4 100644 --- a/sources/pyside6/PySide6/glue/qtgui.cpp +++ b/sources/pyside6/PySide6/glue/qtgui.cpp @@ -718,6 +718,20 @@ else %PYARG_0 = %CONVERTTOPYTHON[int](cppResult); // @snippet qdrag-exec-arg2 +// @snippet qregion-len +return %CPPSELF.rectCount(); +// @snippet qregion-len + +// @snippet qregion-getitem +if (_i < 0 || _i >= %CPPSELF.rectCount()) { + PyErr_SetString(PyExc_IndexError, "index out of bounds"); + return nullptr; +} + +const QRect cppResult = *(%CPPSELF.cbegin() + _i); +return %CONVERTTOPYTHON[QRect](cppResult); +// @snippet qregion-getitem + /********************************************************************* * CONVERSIONS ********************************************************************/ |
