Subject: stacking chain

From: Michael Han <[email-masked]>
Date: Sat, 13 May 2000 08:50:24 -0700

Hi, I've been trying to track down the problem I occassionally see
with the stacking chain getting out of order, allowing transients to
be raised above windows in layers higher than themselves. I could use
some help understanding what's supposed to happen in
RaiseOrLowerWindow().

Basically, add_window.c's AddWindow() calls
postition_new_window_in_stack_ring() after pushing the window on top
of the stack. This results in a RaiseOrLowerWindow(), which seems to
be where something's not working properly. Following the code in
RaiseOrLowerWindow, I'm having trouble figuring out why transients
should do anything *but* sit on top of the stack regardless of layers,
assuming that no_movement gets set. Or am I saying the wrong thing
here? Should a transient always cause no_movement to be False?

Since I'm having trouble reproducing the correct behavior, I'm not
sure what the flow through RaiseOrLowerWindow() is supposed to look
like. In case anyone's interested, what I'm seeing is that a transient
gets added and placed on top of the stack. A recursive
RaiseOrLowerWindow occurs, but no_movement is getting set True,
meaning that the bulk of the code in RaiseOrLowerWindow never
executes, including the portions that would appear to be responsible
for making sure the raised window falls to the top of its layer
instead of hanging around at the top of the stack.

Any pointers?
-- 
[email-masked]                         http://www.best.com/~mikehan/
coffee achiever                              San Francisco, California
"Notice how I  blame my own mistakes  on the lack  of rules?" - Dan Espen 
--
Visit the official FVWM web page at <URL:http://www.fvwm.org/>.
To unsubscribe from the list, send "unsubscribe fvwm-workers" in the
body of a message to [email-masked].
To report problems, send mail to [email-masked]