From 37bafaa64ddac204447da39179ba7d9553043484 Mon Sep 17 00:00:00 2001 From: Atul R Date: Thu, 6 Jun 2019 18:40:52 +0200 Subject: [PATCH] Fixes segmentation fault due to garbage collection of flex nodes --- src/lib/core/FlexLayout/index.ts | 6 ++++++ src/lib/core/YogaWidget/index.ts | 3 +-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/lib/core/FlexLayout/index.ts b/src/lib/core/FlexLayout/index.ts index 6b1a7fe5a..914f05666 100644 --- a/src/lib/core/FlexLayout/index.ts +++ b/src/lib/core/FlexLayout/index.ts @@ -5,11 +5,17 @@ import { NodeLayout } from "../../QtWidgets/QLayout"; export class FlexLayout extends NodeLayout { native = new addon.FlexLayout(); + protected flexNode?: FlexNode; + protected childFlexNodes = new Set(); + addWidget(childWidget: NodeWidget, childFlexNode: FlexNode) { this.children.add(childWidget); + this.childFlexNodes.add(childFlexNode); + this.native.addWidget(childWidget.native, childFlexNode.native); } setFlexNode(flexNode: FlexNode) { + this.flexNode = flexNode; this.native.setFlexNode(flexNode.native); } } diff --git a/src/lib/core/YogaWidget/index.ts b/src/lib/core/YogaWidget/index.ts index 515769f01..8934b8d51 100644 --- a/src/lib/core/YogaWidget/index.ts +++ b/src/lib/core/YogaWidget/index.ts @@ -3,7 +3,6 @@ import { FlexNode } from "../FlexLayout/FlexNode"; export abstract class YogaWidget extends Component { getFlexNode(): FlexNode { - const nativeFlexNode = this.native.getFlexNode(); - return new FlexNode(nativeFlexNode); + return new FlexNode(this.native.getFlexNode()); } }