emacs-diffs
[Top][All Lists]
Advanced

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

scratch/ns/refactor 7b255dc 07/12: Fix some macOS problems


From: Alan Third
Subject: scratch/ns/refactor 7b255dc 07/12: Fix some macOS problems
Date: Sat, 24 Jul 2021 11:40:04 -0400 (EDT)

branch: scratch/ns/refactor
commit 7b255dc9093c95b1dffd854fad4c885cb3e6516e
Author: Alan Third <alan@idiocy.org>
Commit: Alan Third <alan@idiocy.org>

    Fix some macOS problems
    
    * src/nsmenu.m (update_frame_tool_bar): Make sure the toolbar isn't
    displayed when it's not supposed to be.
    * src/nsterm.m ([EmacsView layoutSublayersOfLayer:]): Reinstate code
    intended to prevent a crash when running redisplay.
---
 src/nsmenu.m |  4 ++--
 src/nsterm.m | 17 ++++++-----------
 2 files changed, 8 insertions(+), 13 deletions(-)

diff --git a/src/nsmenu.m b/src/nsmenu.m
index 673c042..bb0dd26 100644
--- a/src/nsmenu.m
+++ b/src/nsmenu.m
@@ -1089,10 +1089,10 @@ update_frame_tool_bar (struct frame *f)
 #undef TOOLPROP
     }
 
-  if (![toolbar isVisible])
+  if ([toolbar isVisible] != FRAME_EXTERNAL_TOOL_BAR (f))
     {
       f->output_data.ns->in_animation = 1;
-      [toolbar setVisible: YES];
+      [toolbar setVisible: FRAME_EXTERNAL_TOOL_BAR (f)];
       f->output_data.ns->in_animation = 0;
     }
 
diff --git a/src/nsterm.m b/src/nsterm.m
index d721377..18b6b9f 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -7965,20 +7965,15 @@ not_in_argv (NSString *arg)
          crashes.  I think it's because this code will always be run
          within the run loop and for whatever reason processing input
          is dangerous.  This technique was stolen wholesale from
-         nsmenu.m and seems to work.
-
-         FIXME: I can't provoke a crash using layoutSublayersOfLayer,
-         however I can't understand why it would be different from
-         viewWillDraw.  I'll leave this commented out for now, but if
-         nobody reports a crash it can be removed.  */
-      // bool owfi = waiting_for_input;
-      // waiting_for_input = 0;
-      // block_input ();
+         nsmenu.m and seems to work.  */
+      bool owfi = waiting_for_input;
+      waiting_for_input = 0;
+      block_input ();
 
       redisplay ();
 
-      // unblock_input ();
-      // waiting_for_input = owfi;
+      unblock_input ();
+      waiting_for_input = owfi;
     }
 }
 #endif



reply via email to

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