Add QObject.children()
This commit is contained in:
parent
880ea7c998
commit
f3d7d73acc
@ -109,6 +109,16 @@
|
|||||||
Napi::Env env = info.Env(); \
|
Napi::Env env = info.Env(); \
|
||||||
delete static_cast<QObject*>(this->instance); \
|
delete static_cast<QObject*>(this->instance); \
|
||||||
return env.Null(); \
|
return env.Null(); \
|
||||||
|
} \
|
||||||
|
Napi::Value children(const Napi::CallbackInfo& info) { \
|
||||||
|
Napi::Env env = info.Env(); \
|
||||||
|
QObjectList children = this->instance->children(); \
|
||||||
|
Napi::Array resultArrayNapi = Napi::Array::New(env, children.size()); \
|
||||||
|
for (int i = 0; i < children.size(); i++) { \
|
||||||
|
resultArrayNapi[i] = \
|
||||||
|
WrapperCache::instance.getWrapper(env, children[i]); \
|
||||||
|
} \
|
||||||
|
return resultArrayNapi; \
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ideally this macro below should go in
|
// Ideally this macro below should go in
|
||||||
@ -155,7 +165,8 @@
|
|||||||
InstanceMethod("killTimer", &ComponentWrapName::killTimer), \
|
InstanceMethod("killTimer", &ComponentWrapName::killTimer), \
|
||||||
InstanceMethod("parent", &ComponentWrapName::parent), \
|
InstanceMethod("parent", &ComponentWrapName::parent), \
|
||||||
InstanceMethod("deleteLater", &ComponentWrapName::deleteLater), \
|
InstanceMethod("deleteLater", &ComponentWrapName::deleteLater), \
|
||||||
InstanceMethod("delete", &ComponentWrapName::deleteObject),
|
InstanceMethod("delete", &ComponentWrapName::deleteObject), \
|
||||||
|
InstanceMethod("children", &ComponentWrapName::children),
|
||||||
|
|
||||||
#endif // QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE
|
#endif // QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE
|
||||||
|
|
||||||
|
|||||||
@ -70,6 +70,9 @@ export class QObject<Signals extends QObjectSignals = QObjectSignals> extends Ev
|
|||||||
deleteLater(): void {
|
deleteLater(): void {
|
||||||
this.native.deleteLater();
|
this.native.deleteLater();
|
||||||
}
|
}
|
||||||
|
children(): QObject[] {
|
||||||
|
return this.native.children().map((kid: any) => wrapperCache.getWrapper(kid));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface QObjectSignals {
|
export interface QObjectSignals {
|
||||||
|
|||||||
@ -82,5 +82,16 @@ describe('WrapperCache using CacheTestQObject', () => {
|
|||||||
expect(b.native).toBeNull();
|
expect(b.native).toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('Object.children()', () => {
|
||||||
|
wrapperCache._flush();
|
||||||
|
const parent = new QObject();
|
||||||
|
const kid1 = new QObject(parent);
|
||||||
|
const kid2 = new QObject(parent);
|
||||||
|
const allKids = parent.children();
|
||||||
|
expect(allKids.length).toBe(2);
|
||||||
|
expect(allKids[0]).toEqual(kid1);
|
||||||
|
expect(allKids[1]).toEqual(kid2);
|
||||||
|
});
|
||||||
|
|
||||||
qApp.quit();
|
qApp.quit();
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user