]> code.delx.au - gnu-emacs/commitdiff
Remove unnecessary redisplays in NS port.
authorJan Djärv <jan.h.d@swipnet.se>
Mon, 30 Jun 2014 12:38:09 +0000 (14:38 +0200)
committerJan Djärv <jan.h.d@swipnet.se>
Mon, 30 Jun 2014 12:38:09 +0000 (14:38 +0200)
* nsmenu.m (update_frame_tool_bar): Set wait_for_tool_bar to NO
when setNeedsDisplay is called so we don't trigger redisplay for every
tool bar update.

* nsterm.m (any_help_event_p): New variable.
(mouseMoved:): Set any_help_event_p to YES if help event is
generated.  Remove else with empty help event that triggered redisplay
for every mouse move.
(windowDidResignKey:): If any_help_event_p, generate empty help
event.

src/ChangeLog
src/nsmenu.m
src/nsterm.m

index 4a6b6a4769c4336e8067a626cabf5c973c35bc2a..b87555344f926568158a117ac3a4d4f144cd1e51 100644 (file)
@@ -1,3 +1,16 @@
+2014-06-30  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsmenu.m (update_frame_tool_bar): Set wait_for_tool_bar to NO
+       when setNeedsDisplay is called so we don't trigger redisplay for every
+       tool bar update.
+
+       * nsterm.m (any_help_event_p): New variable.
+       (mouseMoved:): Set any_help_event_p to YES if help event is
+       generated.  Remove else with empty help event that triggered redisplay
+       for every mouse move.
+       (windowDidResignKey:): If any_help_event_p, generate empty help
+       event.
+
 2014-06-29  Dmitry Antipov  <dmantipov@yandex.ru>
 
        * xfns.c (Qsuppress_icon): Remove; no real users.
index 24c1189584b87efad89b054ca2a1aa3529c2d5ee..778b068ef8b2405247f3e787fdff23b1d15ccad1 100644 (file)
@@ -1152,7 +1152,10 @@ update_frame_tool_bar (struct frame *f)
     FRAME_TOOLBAR_HEIGHT (f) = 0;
 
   if (view->wait_for_tool_bar && FRAME_TOOLBAR_HEIGHT (f) > 0)
+    {
+      view->wait_for_tool_bar = NO;
       [view setNeedsDisplay: YES];
+    }
 
   unblock_input ();
 }
index c6450804f577701db44d1e5e6319dcfcf45daad0..69738ba924ab6221ddcb88df64745bb0db02b2e7 100644 (file)
@@ -283,6 +283,11 @@ static NSMutableArray *ns_pending_files, *ns_pending_service_names,
 static BOOL ns_do_open_file = NO;
 static BOOL ns_last_use_native_fullscreen;
 
+/* Non-zero means that a HELP_EVENT has been generated since Emacs
+   start.  */
+
+static BOOL any_help_event_p = NO;
+
 static struct {
   struct input_event *q;
   int nr, cap;
@@ -5688,14 +5693,10 @@ not_in_argv (NSString *arg)
       /* NOTE: help_echo_{window,pos,object} are set in xdisp.c
          (note_mouse_highlight), which is called through the
          note_mouse_movement () call above */
+      any_help_event_p = YES;
       gen_help_event (help_echo_string, frame, help_echo_window,
                       help_echo_object, help_echo_pos);
     }
-  else
-    {
-      help_echo_string = Qnil;
-      gen_help_event (Qnil, frame, Qnil, Qnil, 0);
-    }
 
   if (emacsframe->mouse_moved && send_appdefined)
     ns_send_appdefined (-1);
@@ -5973,6 +5974,14 @@ if (cols > 0 && rows > 0)
       x_set_frame_alpha (emacsframe);
     }
 
+  if (any_help_event_p)
+    {
+      Lisp_Object frame;
+      XSETFRAME (frame, emacsframe);
+      help_echo_string = Qnil;
+      gen_help_event (Qnil, frame, Qnil, Qnil, 0);
+    }
+
   if (emacs_event && is_focus_frame)
     {
       [self deleteWorkingText];