aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/PySide6
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside6/PySide6')
-rw-r--r--sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml6
-rw-r--r--sources/pyside6/PySide6/glue/qtgui.cpp14
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&amp;=(QRegion)" remove="all"/>
<modify-function signature="operator&amp;=(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
********************************************************************/