[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebindings/csharp/qyoto
From: Arno Rehn <kde () arnorehn ! de>
Date: 2008-12-09 18:55:49
Message-ID: 1228848949.355904.18018.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 894989 by arnorehn:
* Watch out for itemChange() calls and if necessary, add or remove global refs
to QGraphicsItems and subclasses. Thanks to Eric Butler for reporting the bug.
CCMAIL: kde-bindings@kde.org
M +5 -0 ChangeLog
M +26 -0 src/qyotosmokebinding.cpp
--- trunk/KDE/kdebindings/csharp/qyoto/ChangeLog #894988:894989
@@ -1,3 +1,8 @@
+2008-12-09 Arno Rehn <arno@arnorehn.de>
+
+ * Watch out for itemChange() calls and if necessary, add or remove global refs
+ to QGraphicsItems and subclasses. Thanks to Eric Butler for reporting the bug.
+
2008-11-30 Arno Rehn <arno@arnorehn.de>
* Check for return values being null and if so, don't alloc a GCHandle to it.
--- trunk/KDE/kdebindings/csharp/qyoto/src/qyotosmokebinding.cpp #894988:894989
@@ -20,6 +20,14 @@
#include <cstdlib>
+#include <qt_smoke.h>
+
+#if QT_VERSION >= 0x40200
+ #include <QVariant>
+ #include <QGraphicsScene>
+ #include <QGraphicsItem>
+#endif
+
namespace Qyoto {
Binding::Binding() : SmokeBinding(0) {}
@@ -92,6 +100,11 @@
fflush(stdout);
}
+#if QT_VERSION >= 0x40200
+ static Smoke::Index qgraphicsitem_class = qt_Smoke->idClass("QGraphicsItem").index;
+#endif
+
+ smokeqyoto_object *sqo = (smokeqyoto_object*) (*GetSmokeObject)(obj);
if (strcmp(signature, "qt_metacall(QMetaObject::Call, int, void**)") == 0) {
QMetaObject::Call _c = (QMetaObject::Call)args[1].s_int;
int _id = args[2].s_int;
@@ -101,6 +114,19 @@
(*FreeGCHandle)(obj);
return true;
+#if QT_VERSION >= 0x40200
+ } else if (strcmp(signature, "itemChange(QGraphicsItem::GraphicsItemChange, const QVariant&)") == 0
+ && smoke->isDerivedFrom(smoke, sqo->classId, qt_Smoke, qgraphicsitem_class)) {
+ int change = args[1].s_int;
+ if (change == QGraphicsItem::ItemSceneChange) {
+ QGraphicsScene *scene = ((QVariant*) args[2].s_voidp)->value<QGraphicsScene*>();
+ if (scene) {
+ (*AddGlobalRef)(obj, ptr);
+ } else {
+ (*RemoveGlobalRef)(obj, ptr);
+ }
+ }
+#endif
}
void * overridenMethod = (*OverridenMethod)(obj, (const char *) signature);
if (overridenMethod == 0) {
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic