/* Let it grow only, until we display an empty message, in which
case the window shrinks again. */
- if (height > XFASTINT (w->height)
- || exact_p
- || BEGV == ZV)
+ if (height > XFASTINT (w->height))
{
- Lisp_Object old_selected_window;
- Lisp_Object fix_window;
int old_height = XFASTINT (w->height);
-
- freeze_window_starts (f, height > XFASTINT (w->height));
-
- /* If the mini-buffer is selected, try to not change
- the height of Vminibuf_scroll_window. Otherwise try
- to not change the height of the selected window. */
- if (MINI_WINDOW_P (XWINDOW (selected_window)))
- fix_window = Vminibuf_scroll_window;
- else
- fix_window = selected_window;
-
- old_selected_window = selected_window;
- XSETWINDOW (selected_window, w);
- XWINDOW (fix_window)->height_fixed_p = 1;
- change_window_height (height - XFASTINT (w->height), 0);
- XWINDOW (fix_window)->height_fixed_p = 0;
- selected_window = old_selected_window;
+ freeze_window_starts (f, 1);
+ grow_mini_window (w, height - XFASTINT (w->height));
+ window_height_changed_p = XFASTINT (w->height) != old_height;
+ }
+ else if (height < XFASTINT (w->height)
+ && (exact_p || BEGV == ZV))
+ {
+ int old_height = XFASTINT (w->height);
+ freeze_window_starts (f, 0);
+ shrink_mini_window (w);
window_height_changed_p = XFASTINT (w->height) != old_height;
}
}