aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/PySide6
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2021-11-18 13:27:04 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2021-11-19 14:53:57 +0100
commit943aa9ef6fef7533a3566f230aaf878efe46725e (patch)
tree97e05257c3fd19df657ea08289d1682080bf50b7 /sources/pyside6/PySide6
parent554d28f8f2c6104aca88079e9c7999d30eaf629a (diff)
PySide6: Add a sequence protocol for QRegion
Pick-to: 6.2 Fixes: PYSIDE-1714 Change-Id: I581e8088e25ab31afdfc6cd5a15c55a5b418ffdc Reviewed-by: Christian Tismer <tismer@stackless.com>
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
********************************************************************/