@@ -167,35 +167,32 @@ FJavascriptUICommandInfo UJavascriptMenuLibrary::UI_COMMAND_Function(FJavascript
167
167
168
168
FJavascriptExtensionBase UJavascriptMenuLibrary::AddToolBarExtension (FJavascriptExtender Extender, FName ExtensionHook, EJavascriptExtensionHook::Type HookPosition, FJavascriptUICommandList CommandList, FJavascriptFunction Function)
169
169
{
170
- auto Copy = new FJavascriptFunction;
171
- *Copy = Function;
170
+ TSharedPtr<FJavascriptFunction> Copy ( new FJavascriptFunction) ;
171
+ *( Copy. Get ()) = Function;
172
172
return { Extender->AddToolBarExtension (ExtensionHook, (EExtensionHook::Position)HookPosition, CommandList.Handle , FToolBarExtensionDelegate::CreateLambda ([=](class FToolBarBuilder & Builder) {
173
173
FJavascriptMenuBuilder Out;
174
174
Out.MultiBox = Out.ToolBar = &Builder;
175
175
Copy->Execute (FJavascriptMenuBuilder::StaticStruct (), &Out);
176
- delete Copy;
177
176
}))};
178
177
}
179
178
FJavascriptExtensionBase UJavascriptMenuLibrary::AddMenuExtension (FJavascriptExtender Extender, FName ExtensionHook, EJavascriptExtensionHook::Type HookPosition, FJavascriptUICommandList CommandList, FJavascriptFunction Function)
180
179
{
181
- auto Copy = new FJavascriptFunction;
182
- *Copy = Function;
180
+ TSharedPtr<FJavascriptFunction> Copy ( new FJavascriptFunction) ;
181
+ *( Copy. Get ()) = Function;
183
182
return { Extender->AddMenuExtension (ExtensionHook, (EExtensionHook::Position)HookPosition, CommandList.Handle , FMenuExtensionDelegate::CreateLambda ([=](class FMenuBuilder & Builder) {
184
183
FJavascriptMenuBuilder Out;
185
184
Out.MultiBox = Out.Menu = &Builder;
186
185
Copy->Execute (FJavascriptMenuBuilder::StaticStruct (), &Out);
187
- delete Copy;
188
186
})) };
189
187
}
190
188
FJavascriptExtensionBase UJavascriptMenuLibrary::AddMenubarExtension (FJavascriptExtender Extender, FName ExtensionHook, EJavascriptExtensionHook::Type HookPosition, FJavascriptUICommandList CommandList, FJavascriptFunction Function)
191
189
{
192
- auto Copy = new FJavascriptFunction;
193
- *Copy = Function;
190
+ TSharedPtr<FJavascriptFunction> Copy ( new FJavascriptFunction) ;
191
+ *( Copy. Get ()) = Function;
194
192
return { Extender->AddMenuBarExtension (ExtensionHook, (EExtensionHook::Position)HookPosition, CommandList.Handle , FMenuBarExtensionDelegate::CreateLambda ([=](class FMenuBarBuilder & Builder) {
195
193
FJavascriptMenuBuilder Out;
196
194
Out.MultiBox = Out.MenuBar = &Builder;
197
195
Copy->Execute (FJavascriptMenuBuilder::StaticStruct (), &Out);
198
- delete Copy;
199
196
})) };
200
197
}
201
198
@@ -236,4 +233,19 @@ FJavascriptExtender::FJavascriptExtender()
236
233
237
234
FJavascriptExtender::FJavascriptExtender (TSharedPtr<FExtender> Extender)
238
235
: Handle(Extender)
239
- {}
236
+ {}
237
+
238
+ void UJavascriptMenuLibrary::AddPullDownMenu (FJavascriptMenuBuilder& MenuBuilder, const FText& InMenuLabel, const FText& InToolTip, FJavascriptFunction InPullDownMenu, FName InExtensionHook, FName InTutorialHighlightName)
239
+ {
240
+ if (MenuBuilder.MenuBar )
241
+ {
242
+ TSharedPtr<FJavascriptFunction> Copy (new FJavascriptFunction);
243
+ *(Copy.Get ()) = InPullDownMenu;
244
+ auto Delegate = FNewMenuDelegate::CreateLambda ([=](class FMenuBuilder & Builder) {
245
+ FJavascriptMenuBuilder Out;
246
+ Out.MultiBox = Out.Menu = &Builder;
247
+ Copy->Execute (FJavascriptMenuBuilder::StaticStruct (), &Out);
248
+ });
249
+ MenuBuilder.MenuBar ->AddPullDownMenu (InMenuLabel, InToolTip, Delegate, InExtensionHook, InTutorialHighlightName);
250
+ }
251
+ }
0 commit comments