]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix a problem with x_set_tab_bar_lines (Bug#46827)
authorMartin Rudalics <rudalics@gmx.at>
Tue, 4 May 2021 07:17:11 +0000 (09:17 +0200)
committerMartin Rudalics <rudalics@gmx.at>
Tue, 4 May 2021 07:17:11 +0000 (09:17 +0200)
* src/xfns.c (x_set_tab_bar_lines): Call
x_change_tab_bar_height only if the number of tab bar lines
changed from or to zero (Bug#46827).
* src/xterm.c (x_make_frame_visible): Make frame_size_history
update less noisy by doing it only if the frame wasn't visible
before.

src/xfns.c
src/xterm.c

index 2c95065d3eaa4dc5c6444aecbe9e9d09ca31d2d4..782e0a483c4f6a0b7703be36f9eb662d594c234f 100644 (file)
@@ -1608,13 +1608,15 @@ x_set_menu_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
 
 /* Set the number of lines used for the tab bar of frame F to VALUE.
    VALUE not an integer, or < 0 means set the lines to zero.  OLDVAL
-   is the old number of tab bar lines.  This function changes the
+   is the old number of tab bar lines.  This function may change the
    height of all windows on frame F to match the new tab bar height.
-   The frame's height doesn't change.  */
+   The frame's height may change if frame_inhibit_implied_resize was
+   set accordingly.  */
 
 static void
 x_set_tab_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
 {
+  int olines = FRAME_TAB_BAR_LINES (f);
   int nlines;
 
   /* Treat tab bars like menu bars.  */
@@ -1627,7 +1629,8 @@ x_set_tab_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
   else
     nlines = 0;
 
-  x_change_tab_bar_height (f, nlines * FRAME_LINE_HEIGHT (f));
+  if (nlines != olines && (olines == 0 || nlines == 0))
+    x_change_tab_bar_height (f, nlines * FRAME_LINE_HEIGHT (f));
 }
 
 
index 189e3a47eea40d86549fe61803cbd60b5a0fe460..88a393cc6c25955aa6a32ea2befcc054d5511919 100644 (file)
@@ -11823,12 +11823,14 @@ x_make_frame_visible (struct frame *f)
     poll_suppress_count = old_poll_suppress_count;
 #endif
 
-    if (CONSP (frame_size_history))
-      frame_size_history_plain
-       (f, build_string ("x_make_frame_visible"));
+    if (!FRAME_VISIBLE_P (f))
+      {
+       if (CONSP (frame_size_history))
+         frame_size_history_plain
+           (f, build_string ("x_make_frame_visible"));
 
-    if (! FRAME_VISIBLE_P (f))
-      x_wait_for_event (f, MapNotify);
+       x_wait_for_event (f, MapNotify);
+      }
   }
 }