# HG changeset patch # User Gerd Moellmann # Date 938125057 0 # Node ID 0d73a1e7b7f224dc79cd2e02cd916202c3ed6c90 # Parent 952b7a2a3d9178300a92e4e7fca815954bab8d26 (enlarge_window): Add window parameter instead of using selected_window. (Fdisplay_buffer): Call it with window parameter instead of setting selected_window. (Fenlarge_window, Fshrink_window): Ditto. (shrink_mini_window): If there is no recorded height and position info, resize mini-window to height 1. diff -r 952b7a2a3d91 -r 0d73a1e7b7f2 src/window.c --- a/src/window.c Thu Sep 23 22:17:36 1999 +0000 +++ b/src/window.c Thu Sep 23 22:17:37 1999 +0000 @@ -60,7 +60,7 @@ int, int)); static void freeze_window_start P_ ((struct window *, int)); static int window_fixed_size_p P_ ((struct window *, int, int)); -static void enlarge_window P_ ((int, int)); +static void enlarge_window P_ ((Lisp_Object, int, int)); /* This is the window in which the terminal's cursor should @@ -2789,14 +2789,9 @@ { int total = (XFASTINT (XWINDOW (other)->height) + XFASTINT (XWINDOW (window)->height)); - Lisp_Object old_selected_window; - old_selected_window = selected_window; - - selected_window = upper; - enlarge_window ((total / 2 - - XFASTINT (XWINDOW (upper)->height)), + enlarge_window (upper, + total / 2 - XFASTINT (XWINDOW (upper)->height), 0); - selected_window = old_selected_window; } } } @@ -3030,7 +3025,7 @@ register Lisp_Object arg, side; { CHECK_NUMBER (arg, 0); - enlarge_window (XINT (arg), !NILP (side)); + enlarge_window (selected_window, XINT (arg), !NILP (side)); if (! NILP (Vwindow_configuration_change_hook)) call1 (Vrun_hooks, Qwindow_configuration_change_hook); @@ -3045,7 +3040,7 @@ register Lisp_Object arg, side; { CHECK_NUMBER (arg, 0); - enlarge_window (-XINT (arg), !NILP (side)); + enlarge_window (selected_window, -XINT (arg), !NILP (side)); if (! NILP (Vwindow_configuration_change_hook)) call1 (Vrun_hooks, Qwindow_configuration_change_hook); @@ -3083,10 +3078,11 @@ they will be deleted. */ static void -enlarge_window (delta, widthflag) +enlarge_window (window, delta, widthflag) + Lisp_Object window; int delta, widthflag; { - Lisp_Object parent, window, next, prev; + Lisp_Object parent, next, prev; struct window *p; int *sizep, maximum; int (*sizefun) P_ ((Lisp_Object)) @@ -3099,7 +3095,6 @@ check_min_window_sizes (); /* Give up if this window cannot be resized. */ - window = selected_window; if (window_fixed_size_p (XWINDOW (window), widthflag, 1)) error ("Window is not resizable"); @@ -3483,9 +3478,10 @@ } -/* Shrink mini-window W back to its original size before the first - call to grow_mini_window. Resize other windows on the same frame - back to their original size. */ +/* Shrink mini-window W. If there is recorded info about window sizes + before a call to grow_mini_window, restore recorded window sizes. + Otherwise, if the mini-window is higher than 1 line, resize it to 1 + line. */ void shrink_mini_window (w) @@ -3501,6 +3497,12 @@ FRAME_WINDOW_SIZES_CHANGED (f) = 1; windows_or_buffers_changed = 1; } + else if (XFASTINT (w->height) > 1) + { + Lisp_Object window; + XSETWINDOW (window, w); + enlarge_window (window, 1 - XFASTINT (w->height), 0); + } }