Skip to content

Commit 4571a2d

Browse files
committed
create a private object which inherits from FGCObject to hold UCanvas object
1 parent ac845cb commit 4571a2d

File tree

2 files changed

+29
-10
lines changed

2 files changed

+29
-10
lines changed

Source/JavascriptEditor/JavascriptEditorViewport.cpp

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,25 @@
88

99
PRAGMA_DISABLE_SHADOW_VARIABLE_WARNINGS
1010

11+
12+
class FCanvasOwner : public FGCObject
13+
{
14+
15+
public:
16+
FCanvasOwner(): FGCObject()
17+
{
18+
Canvas = nullptr;
19+
}
20+
21+
virtual void AddReferencedObjects(FReferenceCollector& Collector) override
22+
{
23+
Collector.AddReferencedObject(Canvas);
24+
}
25+
26+
public:
27+
UCanvas* Canvas;
28+
};
29+
1130
#if WITH_EDITOR
1231
class FJavascriptEditorViewportClient : public FEditorViewportClient
1332
{
@@ -131,17 +150,17 @@ class FJavascriptEditorViewportClient : public FEditorViewportClient
131150

132151
if (Widget.IsValid() && Widget->OnDrawCanvas.IsBound())
133152
{
134-
if(Widget->Canvas == nullptr){
135-
Widget->Canvas = NewObject<UCanvas>(Widget.Get());
153+
if(CanvasOwner.Canvas == nullptr){
154+
CanvasOwner.Canvas = NewObject<UCanvas>(Widget.Get());
136155
}
137156

138-
Widget->Canvas->Canvas = &Canvas;
139-
Widget->Canvas->Init(View.UnscaledViewRect.Width(), View.UnscaledViewRect.Height(), const_cast<FSceneView*>(&View));
140-
Widget->Canvas->ApplySafeZoneTransform();
157+
CanvasOwner.Canvas->Canvas = &Canvas;
158+
CanvasOwner.Canvas->Init(View.UnscaledViewRect.Width(), View.UnscaledViewRect.Height(), const_cast<FSceneView*>(&View));
159+
CanvasOwner.Canvas->ApplySafeZoneTransform();
141160

142-
Widget->OnDrawCanvas.Execute(Widget->Canvas, Widget.Get());
161+
Widget->OnDrawCanvas.Execute(CanvasOwner.Canvas, Widget.Get());
143162

144-
Widget->Canvas->PopSafeZoneTransform();
163+
CanvasOwner.Canvas->PopSafeZoneTransform();
145164
}
146165
}
147166

@@ -215,6 +234,9 @@ class FJavascriptEditorViewportClient : public FEditorViewportClient
215234
FPostProcessSettings PostProcessSettings;
216235
float PostProcessSettingsWeight;
217236
FLinearColor BackgroundColor;
237+
238+
private:
239+
FCanvasOwner CanvasOwner;
218240
};
219241

220242
class SAutoRefreshEditorViewport : public SEditorViewport

Source/JavascriptEditor/JavascriptEditorViewport.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,6 @@ class JAVASCRIPTEDITOR_API UJavascriptEditorViewport : public UPanelWidget
7777

7878
UPROPERTY(EditAnywhere, Category = Events, meta = (IsBindableEvent = "True"))
7979
FOnGetWidgetMode OnGetWidgetMode;
80-
81-
UPROPERTY()
82-
UCanvas* Canvas;
8380

8481
UFUNCTION(BlueprintCallable, Category = "Viewport")
8582
UWorld* GetViewportWorld() const;

0 commit comments

Comments
 (0)