Fix crash when creating a child frame in NS (bug#63107)
* src/nsterm.m ([EmacsView initFrameFromEmacs:]): Have a second go at creating the toolbar. ([EmacsWindow createToolbar:]): If there is already a toolbar or the EmacsView's layer is not an EmacsLayer, then do nothing.
This commit is contained in:
parent
d5ab8b6f24
commit
3adc1e7f37
1 changed files with 12 additions and 1 deletions
13
src/nsterm.m
13
src/nsterm.m
|
@ -7930,6 +7930,10 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f
|
|||
[self setLayerContentsRedrawPolicy:
|
||||
NSViewLayerContentsRedrawOnSetNeedsDisplay];
|
||||
[self setLayerContentsPlacement:NSViewLayerContentsPlacementTopLeft];
|
||||
|
||||
/* initWithEmacsFrame can't create the toolbar before the layer is
|
||||
set, so have another go at creating the toolbar here. */
|
||||
[(EmacsWindow*)[self window] createToolbar:f];
|
||||
#endif
|
||||
|
||||
if (ns_drag_types)
|
||||
|
@ -9174,11 +9178,18 @@ - (instancetype) initWithEmacsFrame: (struct frame *) f
|
|||
|
||||
- (void)createToolbar: (struct frame *)f
|
||||
{
|
||||
if (FRAME_UNDECORATED (f) || !FRAME_EXTERNAL_TOOL_BAR (f))
|
||||
if (FRAME_UNDECORATED (f) || !FRAME_EXTERNAL_TOOL_BAR (f) || [self toolbar] != nil)
|
||||
return;
|
||||
|
||||
EmacsView *view = (EmacsView *)FRAME_NS_VIEW (f);
|
||||
|
||||
#if defined (NS_IMPL_COCOA) && MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
|
||||
/* If the view's layer isn't an EmacsLayer then we can't create the
|
||||
toolbar yet. */
|
||||
if (! [[view layer] isKindOfClass:[EmacsLayer class]])
|
||||
return;
|
||||
#endif
|
||||
|
||||
EmacsToolbar *toolbar = [[EmacsToolbar alloc]
|
||||
initForView:view
|
||||
withIdentifier:[NSString stringWithFormat:@"%p", f]];
|
||||
|
|
Loading…
Add table
Reference in a new issue