diff options
author | Gerd Moellmann <[email protected]> | 1999-08-13 21:24:35 +0000 |
---|---|---|
committer | Gerd Moellmann <[email protected]> | 1999-08-13 21:24:35 +0000 |
commit | b5f05b503d67010e0a49fe3f2af78001afa153e2 (patch) | |
tree | bb5b6b7b2693dd82e0e86cfd6aeccb7c942c30cb /src/window.c | |
parent | c1636aa6ab1112f2131b13df93d0687d0c6c0ba5 (diff) |
(set_window_height, set_window_width):
If window starts out "too small", set its too_small_ok flag.
If window's too_small_ok flag is set, don't delete it
unless it is so small it would cause a crash.
Diffstat (limited to 'src/window.c')
-rw-r--r-- | src/window.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/window.c b/src/window.c index 9f33695527..5153ea191e 100644 --- a/src/window.c +++ b/src/window.c @@ -1929,9 +1929,21 @@ set_window_height (window, height, nodelete) check_min_window_sizes (); + /* If the window has been "too small" at one point, + don't delete it for being "too small" in the future. + Preserve it as long as that is at all possible. */ + if (oheight < window_min_height) + w->too_small_ok = Qt; + if (!nodelete && !NILP (w->parent)) { - int min_height = window_min_size (w, 0); + int min_height; + + if (!MINI_WINDOW_P (w) && !NILP (w->too_small_ok)) + min_height = MIN_SAFE_WINDOW_HEIGHT; + else + min_height = window_min_size (w, 0); + if (height < min_height) { delete_window (window); @@ -1998,7 +2010,16 @@ set_window_width (window, width, nodelete) int left, pos, lastright, opos, lastoright; Lisp_Object child; - if (!nodelete && width < window_min_width && !NILP (w->parent)) + /* If the window has been "too small" at one point, + don't delete it for being "too small" in the future. + Preserve it as long as that is at all possible. */ + if (owidth < window_min_width) + w->too_small_ok = Qt; + + if (!nodelete && !NILP (w->parent) + && (! NILP (w->too_small_ok) + ? width < MIN_SAFE_WINDOW_WIDTH + : width < window_min_width)) { delete_window (window); return; |