emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 3adc1e7f379: Fix crash when creating a child frame in NS (bug#631


From: Alan Third
Subject: master 3adc1e7f379: Fix crash when creating a child frame in NS (bug#63107)
Date: Sun, 7 May 2023 18:53:42 -0400 (EDT)

branch: master
commit 3adc1e7f37901235bda83ea65a90644b7b0a8dbf
Author: Alan Third <alan@idiocy.org>
Commit: Alan Third <alan@idiocy.org>

    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.
---
 src/nsterm.m | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/nsterm.m b/src/nsterm.m
index ecbf80ff72d..b9e3cbf81a1 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -7930,6 +7930,10 @@ ns_in_echo_area (void)
   [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 @@ ns_in_echo_area (void)
 
 - (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]];



reply via email to

[Prev in Thread] Current Thread [Next in Thread]