xinerama monitor edge patch

John Russell drjimmy42 at
Tue Jan 20 22:24:21 EST 2004

I have attached a patch that I wrote for the function 

gint client_directional_edge_search(ObClient *c, ObDirection dir)

The changes I made mostly effect xinerama users and do the following.

1) When doing a search for the nearest edge, this function will treat
the divide between monitors as a client edge.  MoveToEdge will now make
a stop at the monitor edge between two screens and GrowToEdge will grow
to the monitor edge.  It is, of course, still possible to Move/Grow
beyond the monitor divide, it is just treated like a normal client edge.
This gives what I perceive to be much more expected behavior when using
both the MoveToEdge<direction> and GrowToEdge<direction> actions with

2) This also has the effect of ignoring panels as edges when they are
placed on the edge between two monitors set up for xinerama.  It used to
be impossible to pass over the monitor divide to another monitor if you
had a panel in the way using MovetoEdge<direction>, I assume because of
the struts from the panel.  This change does not effect the way panels
are treated outside of xinerama. 

3) Also in this function, if the leading edge of the client being moved
is already at the destination, the list of clients will not be searched
looking for a closer destination since it is not possible that there
will be one.  This might save someone a few microseconds of processor
time at some point. 

Hope you like the patch.  Thanks for the great WM.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: monitor_edge.patch
Type: text/x-patch
Size: 3296 bytes
Desc: not available
URL: <>

More information about the openbox mailing list