aboutsummaryrefslogtreecommitdiffstats
path: root/libpyside
diff options
context:
space:
mode:
authorMateusz Skowroński <skowri@gmail.com>2016-02-01 06:42:11 +0100
committerMateusz Skowroński <skowri@gmail.com>2016-02-01 15:52:20 -0600
commit3eea8cef339d2b8d6f39a7401c2921bce5a4d65d (patch)
treee45b992f8860d3b3656ff699c74080885ee2608a /libpyside
parent72c5289c41018d332d76cbd03c389825a946d049 (diff)
Fix building signalmanager.cpp with Qt < 5.5.0.
1. Heap namespace has been introduced in Qt 5.5.0. 2. Throw methods have been moved from ExecutionContext to ExecutionEngine in Qt 5.5.0. Source 1: https://github.com/qtproject/qtdeclarative/commit/84aae25c0b3003fb846568cf26a2c7150db14d9d Source 2: https://github.com/qtproject/qtdeclarative/commit/486948817b26da2c62802bb93a0f671715c609d4
Diffstat (limited to 'libpyside')
-rw-r--r--libpyside/signalmanager.cpp.in23
1 files changed, 20 insertions, 3 deletions
diff --git a/libpyside/signalmanager.cpp.in b/libpyside/signalmanager.cpp.in
index c477757de..adfc7942d 100644
--- a/libpyside/signalmanager.cpp.in
+++ b/libpyside/signalmanager.cpp.in
@@ -475,14 +475,21 @@ int SignalManager::qt_metacall(QObject* object, QMetaObject::Call call, int id,
if (data || !data->jsWrapper.isNullOrUndefined()) {
QV4::ExecutionEngine *engine = data->jsWrapper.engine();
- #if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
+#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
QV4::Heap::ExecutionContext *ctx = engine->current;
- #else
+#elif QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)
QV4::Heap::ExecutionContext *ctx = engine->currentContext();
- #endif
+#else
+ QV4::ExecutionContext *ctx = engine->currentContext();
+#endif
+#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)
if (ctx->type == QV4::Heap::ExecutionContext::Type_CallContext ||
ctx->type == QV4::Heap::ExecutionContext::Type_SimpleCallContext) {
+#else
+ if (ctx->type == QV4::ExecutionContext::Type_CallContext ||
+ ctx->type == QV4::ExecutionContext::Type_SimpleCallContext) {
+#endif
PyObject *errType, *errValue, *errTraceback;
PyErr_Fetch(&errType, &errValue, &errTraceback);
PyErr_Restore(errType, errValue, errTraceback);
@@ -491,6 +498,7 @@ int SignalManager::qt_metacall(QObject* object, QMetaObject::Call call, int id,
PyErr_Print();
+#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)
if (errType == PyExc_SyntaxError) {
return engine->throwSyntaxError(errString);
} else if (errType == PyExc_TypeError) {
@@ -498,6 +506,15 @@ int SignalManager::qt_metacall(QObject* object, QMetaObject::Call call, int id,
} else {
return engine->throwError(errString);
}
+#else
+ if (errType == PyExc_SyntaxError) {
+ return ctx->throwSyntaxError(errString);
+ } else if (errType == PyExc_TypeError) {
+ return ctx->throwTypeError(errString);
+ } else {
+ return ctx->throwError(errString);
+ }
+#endif
}
}
#endif