aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside2/libpyside
Commit message (Collapse)AuthorAgeFilesLines
* Fix Python 3.8 problemsChristian Tismer2019-12-057-10/+21
| | | | | | | | | | | | | | | | | | | | | | This patch fixes some refcounting problems with Python 3.8 . One incompatible change was announced in the what's new document, but actually there were two more problems which were not explicitly mentioned but took much time to sort out. The patch is compatible with the limited API changes (tested with debug build and API error disabled). It is also independent of the Python version which is full Limited API support. For more info, see the documentation mentioned below. The flag error is circumvented now! We either find a better solution or leave it as it is. For now this is ok. Fixes: PYSIDE-939 Change-Id: Iff4a9816857a6ebe86efd4b654d8921e4e464939 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* libpyside: Use new static stringsFriedemann Kleint2019-10-046-8/+134
| | | | | | | Initial-patch-by: Christian Tismer <tismer@stackless.com> Task-number: PYSIDE-1087 Change-Id: I5b4f0e70bc9b79dd4a4a545e97722ceba778ee53 Reviewed-by: Christian Tismer <tismer@stackless.com>
* Merge remote-tracking branch 'origin/5.13' into 5.14Friedemann Kleint2019-09-251-1/+2
|\ | | | | | | Change-Id: I27c0e49bf4768339ce62669085d9a62ffd9ecf5a
| * libpyside: Fix compiler warningFriedemann Kleint2019-09-251-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Restore the warnings formatting code in helper fillQtProperties() to what it was before, (since QByteArray propName is constructed from PyObject *key), fixing: format ‘%S’ expects argument of type ‘wchar_t*’, but argument 3 has type ‘PyObject*’ {aka ‘_object*’} [-Wformat=] Amends bff242cfd8a34dcf2848a8864732eb5bdf85dbf0. Task-number: PYSIDE-1019 Change-Id: I724c5eb698327b8b6474c895f1b149b08e729bd1 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* | Clean up string related macrosFriedemann Kleint2019-09-244-10/+4
| | | | | | | | | | | | | | | | | | | | Expand and remove some macros and fix up versions. Initial-patch-by: Christian Tismer <tismer@stackless.com> Task-number: PYSIDE-1087 Change-Id: I20a0be86e6ec6c21423de47bfd81ed003263c922 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* | Merge remote-tracking branch 'origin/5.13' into 5.14Friedemann Kleint2019-09-056-50/+87
|\| | | | | | | Change-Id: I235035ccd510bcb548ffde00244215192d06e600
| * Add QtCore.Slot.__signature__ and much more manuallyChristian Tismer2019-08-216-43/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The signature of QtCore.Slot and other classes could not automatically be generated because the function is not generated by cppgenerator.cpp . We add it manually in the C++ code into the generation process. The case of QtCore.Slot had diverse follow-up issues to be solved: - Classes which did not inherit from Shiboken were not generated. This is a long-standing omission and creates very many new simple types. - The arity of Slot has default arguments after the varargs parameter "*types". This needed an extended Python parser analysis that fixes the arguments given to the inspect module, accordingly. - The signature generation was completely new implemented and relies no longer on the restricted syntax of a Python (2) function but generates signatures directly as Parameter instances. Implemented classes with hand-made signatures: QtCore.ClassInfo QtCore.MetaFunction, QtCore.MetaSignal QtCore.Property QtCore.Signal QtCore.SignalInstance QtCore.Slot QtQml.ListProperty QtQml.VolatileBool As a side effect, many more subtypes were published. Enums are done, which concludes this work. Fixes: PYSIDE-945 Fixes: PYSIDE-1052 Change-Id: Ic09f02ece3a90325519e42e4e39719beb0c27ae9 Reviewed-by: Christian Tismer <tismer@stackless.com>
| * Fix wrong Python init return codesChristian Tismer2019-08-204-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PySide classes had wrong return values in their init code. In case of errors, they would not show up immediately. The following modules are affected: sources/pyside2/libpyside/pysideclassinfo.cpp sources/pyside2/libpyside/pysideproperty.cpp sources/pyside2/libpyside/pysidesignal.cpp sources/pyside2/libpyside/pysideslot.cpp sources/pyside2/PySide2/QtQml/pysideqmlregistertype.cpp This error exists since Nov 03 2010 . Fixes: PYSIDE-1077 Change-Id: I8cf9bf7d1d8f8dca1155274cb24408f423557bac Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* | Fix build against Qt 5.13Friedemann Kleint2019-07-301-0/+4
| | | | | | | | | | | | | | | | | | For development purposes, the 5.14 branch is currently built against Qt 5.13. Qt 5.14 deprecation fixes must be guarded by version checks. Change-Id: I41f7185577c612e8daf8020b9fe57d9ff2c66379 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | Merge remote-tracking branch 'origin/5.13' into devFriedemann Kleint2019-07-053-5/+34
|\| | | | | | | Change-Id: I71a1165ef9dea0eb084b271a0362c3f1e12829e3
| * Add support for parameterNames in SignalsCristian Maureira-Fredes2019-07-043-5/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There were many uses cases when a proper interaction between Python and Qml was needed, one of them was the case to emit signals from Python an get those values via an argument name in QML. A simple example describing this situation can be found in PYSIDE-634: Python: sumResult = Signal(int, arguments=["sum"]) sumResult.emit(42) Qml: onSumResult: console.log(sum) // will print 42 A test case based on the same example was added. Change-Id: I0908f97d88eaadc0c02d81bc4daca936f72f6c6a Fixes: PYSIDE-634 Reviewed-by: Christian Tismer <tismer@stackless.com>
* | Merge remote-tracking branch 'origin/5.13' into devFriedemann Kleint2019-07-0317-421/+420
|\| | | | | | | Change-Id: I389468b76913ac3c8113ab89833c756a7a72e54f
| * Cleanup pointer and trailing whitespace (omissions)Christian Tismer2019-06-251-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "Cleanup pointer whitespace" patch was augmented by some C++11 changes. Unfortunately, this was done in the same commit, and so some old whitespace that was removed could re-appear invisibly, since it was in the original version. This fix tries to remove all trailing whitespace and also adds a few " *" corrections that were lost. The "type *" entries in XML files were changed back to "type*". Change-Id: Ic5c945ad64a47455fb15eebdf184b126af5ecd1d Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * Cleanup pointer whitespace everywhereChristian Tismer2019-06-2416-410/+409
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Among other files to fix, basewrapper.(cpp|h) was full of uncommon pointer whitespace. After fixing that, I could not resist and fixed also libshiboken, generators, and after acceptance also PySide. Most of the time, this regex worked fine (\w\w+)([*&]+)[ ]*(?![&*]*[/=]) replaced with \1 \2 but everything was checked by hand. I did not touch the shiboken tests which are quite hairy. It turned out that inserting a space between a variable and asterisk causes a crash of shiboken, if the same line contains "CONVERTTOCPP". This was temporarily fixed by adding another space after it. Example.. sources/pyside2/PySide2/glue/qtcore.cpp line 977 QByteArray * cppSelf = %CONVERTTOCPP[QByteArray *](obj); //XXX /|\ omitting this space crashes shiboken! cppgenerator.cpp was special, since it was modified to _generate_ correct pointer whitespace. This caused a few testcases to fail, which had to be adjusted, again. This was difficult since some internal names must end on "*" and generated code normally not. Removing the last errors involved binary search on path sets... Apply C++ 11 fixits to the changed code, where applicable. Done-with: Friedemann.Kleint@qt.io Task-number: PYSIDE-1037 Change-Id: I4ac070f52c5efb296c05d581c9d46e6f397a6c81 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Merge remote-tracking branch 'origin/5.13' into devFriedemann Kleint2019-06-191-16/+40
|\| | | | | | | Change-Id: I5aa8f69849db51c61d058b7f0197b883b7d2d4e2
| * Fix negative refcount on QSocketNotifierChristian Tismer2019-06-101-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change 43451e3bc17467593df64cb73ce8c0bf9e60045f from 2018-05-09 introduced a refcount bug that was not caught because we do not build with debug Python. This also revealed an omission in the patch "PySide: Allow any existing attribute in the constructor" when debug Python is used. Change-Id: Idbcbbc87f0a83bb696d03e05af0cf616b21f7335 Fixes: PYSIDE-1027 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * PySide: Allow any existing attribute in the constructorChristian Tismer2019-06-041-16/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are signals and properties which are correctly supported in PySide by the function "fillQtProperties". The structures are introspected by calling "QMetaObject::indexOfSignal" and "QMetaObject::indexOfProperty". By allowing any property, extending the above restriction, we break the Qt API slightly, but have the tremendous advantage of being able to write all needed properties into the constructor call. This approach is a compromize that keeps the attribute calls as they currently are. Supporting real properties where we actually have getter and setter functions would be possible as well, but that would break compatibility very much! It has to be discussed if we want to support a configuration switch that enables this incompatible change. If we would go this far, then I would do this together with changing mixedCase to lower_case. A simple test case has been added. Task-number: PYSIDE-1019 Change-Id: I8094df51d63aa767a5a9ec1c83bcf7db7b157a01 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* | Fix deprecation warnings about deprecated container conversionsFriedemann Kleint2019-05-221-1/+1
|/ | | | | | | | Fix warnings introduced by qtbase/92f984273262531f909ede17a324f546fe502b5c. Change-Id: Ic46e5c93f8dd1910742fbd0578602cca4461643b Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Port property/signal/slot handling of libpyside to use QByteArrayFriedemann Kleint2019-05-066-227/+171
| | | | | | | | | | Introduce C++ structs with QByteArray to be used for signal and slot names and signatures, removing a lot of code dealing with char * pointers, strdup() and reallocating. Change-Id: I28acf727bc6cf468285b153c85b0a342fd79f7d8 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Tismer <tismer@stackless.com>
* libpyside: Refactor code building the signatureFriedemann Kleint2019-05-021-4/+4
| | | | | | | | | The function slotCall() used the now deprecated function QString::sprintf(). Rewrite the code using QByteArray since converting to QString and back is wasteful for the purpose. Change-Id: Ifcd50e76bb7ea0c9d2f2e7453c6e265abe6265b7 Reviewed-by: Christian Tismer <tismer@stackless.com>
* Modernize cmake buildAlexandru Croitor2019-02-073-31/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a CMake super project that includes the shiboken2, PySide2 and pyside2-tools subprojects, so that it's possible to build everything from Qt Creator (or any other IDE that supports CMake) with minimal set up effort, and thus inform the IDE CMake integration of all relevant files, for easier code editing, navigation and refactoring. This also lays the foundation for allowing 3rd parties to use the shiboken2 generator to generate custom modules. This is achieved by eliminating various hardcoded paths for libraries and include directories. Start using CMake targets throughout the build code to correctly propagate link flags and include dirs for libshiboken and shiboken2 executable targets. Same for the libpyside target. Generate two separate cmake config files (build-tree / install-tree) that can be used with find_package(Shiboken2), to make sure that the PySide2 project can be built as part of the super project build. This is currently the only way I've found to allow the super build to work. Note that for the build-tree find_package() to work, the CMAKE_MODULE_PATH has to be adjusted in the super project file. The generated config files contain variables and logic that allow usage of the installed shiboken package in downstream projects (PySide2). This involves things like getting the includes and libraries for the currently found python interpreter, the shiboken build type (release or debug), was shiboken built with limited api support, etc. Generate 2 separate (build-tree and install-tree) config files for PySide2, similar to how it's done for the shiboken case, for pyside2-tools to build correctly. Install shiboken2 target files using install(EXPORT) to allow building PySide2 with an installed Shiboken2 package (as opposed to one that is built as part of the super project). Same with PySide2 targets for pyside2-tools subproject. Make sure not to redefine uninstall targets if they are already defined. Add a --shorter-paths setup.py option, which would be used by the Windows CI, to circumvent creating paths that are too long, and thus avoiding build issues. Output the build characteristics / classifiers into the generated build_history/YYYY-MM-DD_AAAAAA/build_dir.txt file, so it can be used by the test runner to properly filter out blacklisted tests. This was necessary due to the shorter paths options. Fix various issues regarding target includes and library dependencies. Remove certain duplicated cmake code (like limited api check and build type checks) in PySide2, given that that information will now be present in the exported shiboken2 config file. Include a short README.cmake.md file that describes how to build the super project. References used https://rix0r.nl/blog/2015/08/13/cmake-guide/ https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/ https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1 https://cliutils.gitlab.io/modern-cmake/chapters/basics/functions.html https://cmake.org/cmake/help/v3.0/manual/cmake-packages.7.html https://github.com/ComicSansMS/libstratcom/blob/master/CMakeLists.txt Abandoned approach using ExternalProject references: https://cmake.org/cmake/help/latest/module/ExternalProject.html https://stackoverflow.com/questions/44990964/how-to-perform-cmakefind-package-at-build-stage-only Fixes: PYSIDE-919 Change-Id: Iaa15d20b279a04c5e16ce2795d03f912bc44a389 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Propagate Property attributes to the MetaObjectCristian Maureira-Fredes2019-02-071-0/+11
| | | | | | | | | | | | | | | The attributes were ignored when a new Property was being add to the MetaObject. The addProperty method was only creating a new QProperty with the name and default values. The way of setting the attributes comes from: src/corelib/kernel/qmetaobjectbuilder.cpp specifically QMetaObjectBuilder::addProperty. Change-Id: Id81a274b3c2ae9d6b3413ebd54c776cefa392a38 Fixes: PYSIDE-924 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Replace the deprecated Qt algorithms by their std:: equivalentsFriedemann Kleint2019-02-051-1/+2
| | | | | | | | | | | | | | Fix warnings occurring in 5.13: sources/shiboken2/ApiExtractor/abstractmetalang.cpp:1431:66: warning: ‘void qSort(RandomAccessIterator, RandomAccessIterator, LessThan) [with RandomAccessIterator = AbstractMetaFunction**; LessThan = bool (*)(AbstractMetaFunction*, AbstractMetaFunction*)]’ is deprecated: Use std::sort [-Wdeprecated-declarations] sources/shiboken2/generator/shiboken2/cppgenerator.cpp:358:43: warning: ‘void qSort(RandomAccessIterator, RandomAccessIterator) [with RandomAccessIterator = Include*]’ is deprecated: Use std::sort [-Wdeprecated-declarations] sources/shiboken2/generator/shiboken2/cppgenerator.cpp:1683:55: warning: ‘void qSort(RandomAccessIterator, RandomAccessIterator) [with RandomAccessIterator = QList<QString>::iterator]’ is deprecated: Use std::sort [-Wdeprecated-declarations] sources/shiboken2/generator/shiboken2/cppgenerator.cpp:5500:53: warning: ‘void qSort(RandomAccessIterator, RandomAccessIterator) [with RandomAccessIterator = Include*]’ is deprecated: Use std::sort [-Wdeprecated-declarations] sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp:1585:65: warning: ‘void qSort(RandomAccessIterator, RandomAccessIterator, LessThan) [with RandomAccessIterator = AbstractMetaFunction**; LessThan = bool (*)(const AbstractMetaFunction*, const AbstractMetaFunction*)]’ is deprecated: Use std::sort [-Wdeprecated-declarations] sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp:1681:24: warning: ‘void qSort(Container&) [with Container = QStringList]’ is deprecated: Use std::sort [-Wdeprecated-declarations] sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp:2054:25: warning: ‘void qSort(Container&) [with Container = QStringList]’ is deprecated: Use std::sort [-Wdeprecated-declarations] Change-Id: If6940941ac31327597ce362a31b27773f4d5b94c Reviewed-by: Christian Tismer <tismer@stackless.com>
* libpyside: Refactor MetaObjectBuilderPrivate::parsePythonType()Friedemann Kleint2018-11-291-33/+26
| | | | | | | | | | | | | | - Use std::vector to collect the base types. Append the type first to avoid reshuffling when prepending. - Add properties immediately instead of storing in the 2nd loop as signals are already added. - Clang tidy: Use range based for, auto, nullptr Task-number: PYSIDE-784 Change-Id: I765beb2d09600e78abd314cbb394cd106ec22f03 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Install snippets glue codeCristian Maureira-Fredes2018-11-282-0/+2
| | | | | | | | | | | | | The module-specific glue files as well as the standalone glue files are now installed into the PySide2 package. The glue files are now also listed as dependencies for the shiboken generator run, which means that modifying those files will now correctly force a shiboken re-run for the relevant modules. Change-Id: I545c7ada379fafb7f225d0b0f5ce495bf6d4795d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Merge remote-tracking branch 'origin/5.11' into 5.12Friedemann Kleint2018-10-296-8/+8
|\ | | | | | | Change-Id: I3bb491686968e81382c135ab737da259d9796f52
| * Fix Memory Leak Caused By Wrong Limited API DefaultChristian Tismer2018-10-296-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a type has nullptr as tp_dealloc, there apply different defaults. Static types had object_dealloc as default, while new heaptypes created with type_new have subtype_dealloc as default. A problem was now that PyType_FromSpec also has subtype_dealloc as default. But that is wrong, because a type that was written with the static type approach is already written with object_dealloc in mind and takes somehow care about further issues with that type. When we now convert this type and suddenly use subtype_dealloc instead of object_dealloc, things get pretty wrong. Finding that out was pretty hard and took quite long to understand. The fix was then very easy and is the best proof: Replacing our former (wrong) solution of supplying an SbkDummyDealloc with a function object_dealloc works perfectly, and the leakage completely vanished. The documentation now is also corrected. Task-number: PYSIDE-832 Change-Id: Ifc20c28172eb5663cd5e60dac52e0a43acfb626c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | libpyside: Port DynamicQMetaObject to QMetaObjectBuilderFriedemann Kleint2018-10-229-693/+337
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt 5 introduces a new class QMetaObjectBuilder for generating dynamic meta objects for use cases like QML. It provides an API to add methods, properties and info and a factory method toMetaObject() to obtain a QMetaObject snapshot reflecting the changes. Replace the DynamicQMetaObject aggregated by TypeUserData by a class MetaObjectBuilder wrapping a QMetaObjectBuilder with dirty-handling. The code to create the binary data of the QMetaObject can then be removed. For plain Qt objects, the wrapped base meta object will be returned (which fixes the bug). Task-number: PYSIDE-784 Change-Id: Id8a54570aff36c75fe0f3bf2d297a12d02cd773a Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | libpyside: Introduce helper functions for accessing TypeUserData and meta ↵Friedemann Kleint2018-10-164-22/+54
| | | | | | | | | | | | | | | | | | | | | | | | objects Add helpers with overloads to reduce reinterpret_cast<> and increase type safety. Task-number: PYSIDE-784 Change-Id: I334fd7d149a6730094b062dd0371b9a29379d725 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | libpyside: Fix warning about QMetaObject being forward-declared as classFriedemann Kleint2018-10-021-2/+4
| | | | | | | | | | | | | | | | | | It is in fact a struct. Amends 7127a16f53fdadc709d234abf83d7fadfdf3aba7. Fixes: warning: class 'QMetaObject' was previously declared as a struct [-Wmismatched-tags] Change-Id: I3ed3d17706123f3649ac6e889080c5ab095f7e07 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | libpyside: Replace foreach by range-based forFriedemann Kleint2018-10-023-4/+4
| | | | | | | | | | Change-Id: I577ca66e0bd92cfedd060b46f4946963eb91f991 Reviewed-by: Christian Tismer <tismer@stackless.com>
* | libpyside: Clean up #include directivesFriedemann Kleint2018-10-0222-82/+84
| | | | | | | | | | | | | | | | | | | | Remove unused #include directives, group by libpyside, libshiboken, Qt, C++ and sort alphabetically with the exception of sbkpython.h which sanitizes the "slot" defines and needs to go to the top when used). Add the module to the Qt classes. Change-Id: I33d912135bad928d3073a1ddeb487de237d6a45e Reviewed-by: Christian Tismer <tismer@stackless.com>
* | libpyside: Remove deprecated GlobalReceiverFriedemann Kleint2018-10-015-459/+0
| | | | | | | | | | Change-Id: Ied37d22fbd8277811aaea15af0018cec545814c7 Reviewed-by: Christian Tismer <tismer@stackless.com>
* | libpyside: Fix reinterpret_casts related to DynamicQMetaObjectFriedemann Kleint2018-09-284-14/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, DynamicQMetaObject instances were retrieved by direct reinterpret_cast from the SBK user data. This is not entirely correct since the DynamicQMetaObject is merely the first member of the struct TypeUserData. Fix this by moving the struct TypeUserData to a private header and correcting the casts. Task-number: PYSIDE-784 Change-Id: I69ea68bd474c4a38a5f5c5bc3db8bc3bb086e012 Reviewed-by: Christian Tismer <tismer@stackless.com>
* | libpyside: Replace configuration of signalmanager.cpp by definesFriedemann Kleint2018-09-272-7/+5
| | | | | | | | | | | | | | | | | | This makes the development process easier. Task-number: PYSIDE-784 Change-Id: I07ced4b25b65c90e5a17d85be9b8f15a26e5d07d Reviewed-by: Christian Tismer <tismer@stackless.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* | libpyside: Fix contains()/value() antipatternFriedemann Kleint2018-09-123-13/+18
| | | | | | | | | | | | | | | | Use iterators instead, avoiding repeated lookups of hashes and maps. Change-Id: I3b430bdf0ceef1980baeca45849880d35538e89b Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Tismer <tismer@stackless.com>
* | libpyside: Fix deprecation warningFriedemann Kleint2018-09-121-1/+1
| | | | | | | | | | | | | | | | Expand code to fix: signalmanager.cpp:328:41: warning: 'int PySide::SignalManager::addGlobalSlotGetIndex(const char*, PyObject*)' is deprecated [-Wdeprecated-declarations] Change-Id: I5ada505b8ed9a8bd7e604633bc672109450ede6f Reviewed-by: Christian Tismer <tismer@stackless.com>
* | libpyside: Change assert into a warningFriedemann Kleint2018-09-101-1/+5
| | | | | | | | | | | | | | | | | | Emit a warning instead of asserting in SignalManager::registerMetaMethodGetIndex() when source=0. Task-number: PYSIDE-800 Change-Id: Ic3c67d39ddb3d1c1f808d6434f37fbdd74868b5b Reviewed-by: Christian Tismer <tismer@stackless.com>
* | libpyside/PyObjectWrapper: Fix clang-tidy warnings about class definitionFriedemann Kleint2018-09-052-5/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Rearrange definition and delete move constructor and move assignment operator. This unearthed that the (default-generated) move assignment operator was used (unintendedly) in: QDataStream &operator>>(QDataStream&,PyObjectWrapper&). Factor out a reset() method (modeled after std::unique_ptr, QScopedPointer) for this. Change-Id: I48c4f9ca1353984da870bb7eb3308a9f3374d309 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | libpyside: Replace QLinkedList<QObject*> by QVector<QObject*> in DynamicSlotDataFriedemann Kleint2018-09-041-4/+4
| | | | | | | | | | | | Change-Id: Id7b8c7ee48a3e0017d4c66fba34dff573fc59008 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com>
* | libpyside: Replace QLinkedList<QByteArray> by QByteArrayList in MetaObjectFriedemann Kleint2018-09-041-44/+27
| | | | | | | | | | | | | | | | Remove unused list parameter from DynamicQMetaObject::createMetaData(), adapt signatures, make const where applicable and streamline code. Change-Id: I0733382b2a6a35579d3e69280d674ad8a8f1bbc6 Reviewed-by: Christian Tismer <tismer@stackless.com>
* | Merge remote-tracking branch 'origin/5.11' into devFriedemann Kleint2018-09-041-0/+2
|\| | | | | | | Change-Id: Ie8025300580981c5349b31d4846a7f659481991d
| * PySide2: Fix compilation with a with custom namespace specified for QtFriedemann Kleint2018-08-291-0/+2
| | | | | | | | | | | | | | | | | | | | | | Add missing QT_BEGIN/END_NAMESPACE macros. Patch as provided on bug report. Task-number: PYSIDE-635 Change-Id: I7ddb447f1aafeb8da72e7e192905bafe3809797d Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com>
* | libshiboken: Replace AutoDecRef::operator= by a reset() methodFriedemann Kleint2018-08-311-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | The operators cause compiler warnings about multiple versions and missing return types. Replace them by a reset() method (modeled after std::unique_ptr, QScopedPointer). This implies some changes in the templates. Change-Id: I21a8fb9b84ecdfecf9671fa113f1bb3c6483166f Reviewed-by: Christian Tismer <tismer@stackless.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* | libpyside: Fix clang-tidy warnings about class definitionsFriedemann Kleint2018-08-3110-34/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - Add override - Use = default for trivial constructors/destructors - Add Q_DISABLE_COPY where applicable - Use member initialization and remove constructors from simple structs - Use explicit where applicable (which requires adapting code snippets constructing a QVariant from PyObjectWrapper) - Fix some parameter to take a const ref or pass by value and use std::move in constructors Change-Id: I5e0d2c4ef92d20397a7daba2f8a64b507e678510 Reviewed-by: Christian Tismer <tismer@stackless.com>
* | libpyside: Fix remaining clang-tidy warningsFriedemann Kleint2018-08-309-52/+48
| | | | | | | | | | | | | | | | | | | | | | - Remove else after return/continue/break; unindent code or simplify return conditions - Use isEmpty() to check for empty containers - Fix C-style casts - Pass std::size_t by value instead of const ref Change-Id: Ic997d7c39720c1cd3698c4d750e9cfc1f1654788 Reviewed-by: Christian Tismer <tismer@stackless.com>
* | libpyside: Fix spelling of retrive->retrieveFriedemann Kleint2018-08-243-4/+4
| | | | | | | | | | | | | | Rename method and fix comments. Change-Id: I7765826540de0bf03ac41214d357e605d8e84bcf Reviewed-by: Christian Tismer <tismer@stackless.com>
* | Merge remote-tracking branch 'origin/5.11' into devFriedemann Kleint2018-08-241-2/+0
|\| | | | | | | Change-Id: Ide71a89ef173d6f3e1fa6960f7b15f1fd6cc1bf1
| * Implement Proper Name ManglingChristian Tismer2018-08-211-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When types have attributes starting with two underscores but ending with at most one, Python uses name mangling to create a unique private variable. PySide needs to obey this rule in the tp_getattro methods. We implemented it as an optimized _Pep_PrivateMangle function that solves the problem internally without exposing the _Py_Mangle function. Remark: I think the exclusion of the _Py_Mangle function is another oversight in the Limited API. Task-number: PYSIDE-772 Change-Id: I0bfc2418dae439e963a16e37443f2099c6980696 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Limited API: remove the "slot_" workaroundChristian Tismer2018-08-231-7/+2
|/ | | | | | | | | | | | It has been a problem to compile the file "typespec.*" when using Python 2. For some reason, the name "slot" was not usable. I cannot find out what it was and how it vanished, but now I could remove the work-around without problems. Maybe it is due to some different includes which don't define some macros? Change-Id: If316c9c78a18cffcc5e4cac07610bd7f522db446 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>