aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Moellmann <[email protected]>1999-08-13 21:24:35 +0000
committerGerd Moellmann <[email protected]>1999-08-13 21:24:35 +0000
commitb5f05b503d67010e0a49fe3f2af78001afa153e2 (patch)
treebb5b6b7b2693dd82e0e86cfd6aeccb7c942c30cb
parentc1636aa6ab1112f2131b13df93d0687d0c6c0ba5 (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.
-rw-r--r--src/window.c25
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;