Commit 5494d7bc authored by Jan Djärv's avatar Jan Djärv
Browse files

* window.c (delete_window): Handle the case where a h/vchild has

a h/vchild.
parent eb78dfb8
2005-06-06 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* window.c (delete_window): Handle the case where a h/vchild has
a h/vchild.
2005-06-05 Eli Zaretskii <eliz@gnu.org>
 
* w32.c (sys_setsockopt): Change arg 4 to `const void *'. In the
......
......@@ -1452,8 +1452,10 @@ delete_window (window)
tem = par->hchild;
if (NILP (tem))
tem = par->vchild;
if (NILP (XWINDOW (tem)->next))
if (NILP (XWINDOW (tem)->next)) {
replace_window (parent, tem);
par = XWINDOW (tem);
}
/* Since we may be deleting combination windows, we must make sure that
not only p but all its children have been marked as deleted. */
......@@ -1465,6 +1467,51 @@ delete_window (window)
/* Mark this window as deleted. */
p->buffer = p->hchild = p->vchild = Qnil;
if (! NILP (par->parent))
par = XWINDOW (par->parent);
/* Check if we have a v/hchild with a v/hchild. In that case remove
one of them. */
if (! NILP (par->vchild) && ! NILP (XWINDOW (par->vchild)->vchild))
{
p = XWINDOW (par->vchild);
par->vchild = p->vchild;
tem = p->vchild;
}
else if (! NILP (par->hchild) && ! NILP (XWINDOW (par->hchild)->hchild))
{
p = XWINDOW (par->hchild);
par->hchild = p->hchild;
tem = p->hchild;
}
else
p = 0;
if (p)
{
while (! NILP (tem)) {
XWINDOW (tem)->parent = p->parent;
if (NILP (XWINDOW (tem)->next))
break;
tem = XWINDOW (tem)->next;
}
if (! NILP (tem)) {
/* The next of the v/hchild we are removing is now the next of the
last child for the v/hchild:
Before v/hchild -> v/hchild -> next1 -> next2
|
-> next3
After: v/hchild -> next1 -> next2 -> next3
*/
XWINDOW (tem)->next = p->next;
if (! NILP (p->next))
XWINDOW (p->next)->prev = tem;
}
p->next = p->prev = p->vchild = p->hchild = p->buffer = Qnil;
}
/* Adjust glyph matrices. */
adjust_glyphs (f);
UNBLOCK_INPUT;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment