texinfo-commits
[Top][All Lists]
Advanced

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

[7709] update modeline before anything else


From: gavinsmith0123
Subject: [7709] update modeline before anything else
Date: Sun, 9 Apr 2017 05:27:24 -0400 (EDT)

Revision: 7709
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=7709
Author:   gavin
Date:     2017-04-09 05:27:24 -0400 (Sun, 09 Apr 2017)
Log Message:
-----------
update modeline before anything else

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/info/display.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog     2017-04-08 21:39:32 UTC (rev 7708)
+++ trunk/ChangeLog     2017-04-09 09:27:24 UTC (rev 7709)
@@ -1,3 +1,8 @@
+2017-04-09  Gavin Smith  <address@hidden>
+
+       * info/display.c (display_update_one_window): Update modeline 
+       before anything else.
+
 2017-04-08  Gavin Smith  <address@hidden>
 
        * info/info-utils.c (scan_reference_label): If inside an index 

Modified: trunk/info/display.c
===================================================================
--- trunk/info/display.c        2017-04-08 21:39:32 UTC (rev 7708)
+++ trunk/info/display.c        2017-04-09 09:27:24 UTC (rev 7709)
@@ -670,6 +670,32 @@
   if ((win->first_row < 0) || (win->first_row > the_screen->height))
     goto funexit;
 
+  /* If this window has a modeline, it might need to be redisplayed.  Do
+     this before the rest of the window to aid in navigation in case the
+     rest of the window is slow to update (for example, if it has lots of
+     search matches to be displayed). */
+  if (!(win->flags & W_InhibitMode))
+    {
+      window_make_modeline (win);
+      line_index = win->first_row + win->height;
+
+      /* This display line must both be in inverse, and have the same
+         contents. */
+      if ((!display[line_index]->inverse
+           || (strcmp (display[line_index]->text, win->modeline) != 0))
+          /* Check screen isn't very small. */
+          && line_index < the_screen->height)
+        {
+          terminal_goto_xy (0, line_index);
+          terminal_begin_inverse ();
+          terminal_put_text (win->modeline);
+          terminal_end_inverse ();
+          strcpy (display[line_index]->text, win->modeline);
+          display[line_index]->inverse = 1;
+          display[line_index]->textlen = strlen (win->modeline);
+        }
+    }
+
   if (win->node)
     {
       if (!win->line_starts)
@@ -707,31 +733,6 @@
         }
     }
 
-  /* Finally, if this window has a modeline it might need to be redisplayed.
-     Check the window's modeline against the one in the display, and update
-     if necessary. */
-  if (!(win->flags & W_InhibitMode))
-    {
-      window_make_modeline (win);
-      line_index = win->first_row + win->height;
-
-      /* This display line must both be in inverse, and have the same
-         contents. */
-      if ((!display[line_index]->inverse
-           || (strcmp (display[line_index]->text, win->modeline) != 0))
-          /* Check screen isn't very small. */
-          && line_index < the_screen->height)
-        {
-          terminal_goto_xy (0, line_index);
-          terminal_begin_inverse ();
-          terminal_put_text (win->modeline);
-          terminal_end_inverse ();
-          strcpy (display[line_index]->text, win->modeline);
-          display[line_index]->inverse = 1;
-          display[line_index]->textlen = strlen (win->modeline);
-        }
-    }
-
   fflush (stdout);
 
   /* Okay, this window doesn't need updating anymore. */




reply via email to

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