]> git.eshelyaron.com Git - emacs.git/commitdiff
Handle top margin change in adjust_frame_size
authorMartin Rudalics <rudalics@gmx.at>
Wed, 16 Oct 2019 09:02:56 +0000 (11:02 +0200)
committerMartin Rudalics <rudalics@gmx.at>
Wed, 16 Oct 2019 09:02:56 +0000 (11:02 +0200)
* src/frame.c (adjust_frame_size): Handle case where only
pseudo windows changed height so the top margin has to be
adjusted.
* src/window.c (Fset_window_configuration): Call
adjust_frame_size with inhibit 4.

src/frame.c
src/window.c

index cc76cf4f69769e760f095cf863dbf2ec2646fce7..8ca5106cb2a9424a89b959c8c0d567ff797c39a0 100644 (file)
@@ -704,18 +704,17 @@ adjust_frame_size (struct frame *f, int new_width, int new_height, int inhibit,
                inhibit_vertical ? Qt : Qnil));
 
       if (FRAME_TERMINAL (f)->set_window_size_hook)
-        FRAME_TERMINAL (f)->set_window_size_hook (f,
-                                                  0,
-                                                  new_text_width,
-                                                  new_text_height,
-                                                  1);
+        FRAME_TERMINAL (f)->set_window_size_hook
+         (f, 0, new_text_width, new_text_height, 1);
       f->resized_p = true;
 
       return;
     }
 #endif
 
-  if (new_text_width == old_text_width
+  if ((XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_top
+       == FRAME_TOP_MARGIN_HEIGHT (f))
+      && new_text_width == old_text_width
       && new_text_height == old_text_height
       && new_windows_width == old_windows_width
       && new_windows_height == old_windows_height
index ba9af3b9b0ccc753d62b279e63149be7629ff5aa..1e6e148bf486dd3d0437f2b291aa2780dcf8eb6b 100644 (file)
@@ -7129,10 +7129,11 @@ the return value is nil.  Otherwise the value is t.  */)
        if (NILP (leaf_windows[i]->contents))
          free_window_matrices (leaf_windows[i]);
 
-      /* Allow set_window_size_hook again and apply frame size changes
-        if needed.  */
+      /* Allow set_window_size_hook again and resize frame's windows
+        if necessary.  But change frame size only to preserve window
+        minimum sizes.  */
       f->can_set_window_size = true;
-      adjust_frame_size (f, -1, -1, 1, false, Qset_window_configuration);
+      adjust_frame_size (f, -1, -1, 4, false, Qset_window_configuration);
 
       adjust_frame_glyphs (f);
       unblock_input ();