simple check for restack-windows



src/functions.c

This simple check can avoid corruption in stacking order, if lisp part
provides a list with a window repeated in sequence, like
(win1 ...... X  X .....)  because in that case

remove_from_stacking_list  removes both pred and this, and 
insert_in_stacking_list_below will fail, dropping the window out of the stacking
order data.

DEFUN("restack-windows", Frestack_windows, Srestack_windows,


......

if (pred != 0 && !WINDOW_IS_GONE_P (pred))
{
+  if !(this == pred){
    remove_from_stacking_list (this);
    insert_in_stacking_list_below (this, pred);

    /* This works because it tries to stack relative to
       the window above THIS first; which we just set */
    restack_window (this);
+ }
}




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]