Use the nearest monitor when the search query rect does not intersect any monitor (Fix bug 5500) Previously we would try to find the primary monitor and use that when the search was outside any monitor. However, if the primary monitor is chosen by the mouse position and the mouse is not inside any monitor, we enter infinite recursion trying to find the primary monitor. The nearest monitor is a better metric anyhow, and this ensures screen_find_monitor() is never recursive as it always returns a value without depending on other screen.c methods.
Pick the monitor most relevant to a rectangle more cleverly. When monitors overlap (this happens with cloning), we were choosing a monitor to associate with a window, for maximization for example, somewhat arbitrarily. Now we have a more clever algorithm that considers the configured primary monitor first, and that does not prefer monitors based on their sizes, but only how much of the window is in the monitor, excluding parts that were claimed by another monitor already.
Add support for using relative expressions in move and resize actions Have MoveResizeTo use config_parse_gravity_coord instead of duplicating it locally Allow MoveResizeTo positions and sizes and per app positions to be relative to screen size Rename to config_parse_relative_number so it can be used for sizes too Add relative numbers to width/height in MoveResizeTo Add relative numbers to MoveRelative Add relative numbers to ResizeRelative, these are for the client size, not screen size
Ranges of 0 width cannot intersect (Fixes bug #3717)
force the resize popup to be on-screen (not negative position)
make a GravityPoint and GravityCoord data structures for those --x, ++y type values
xinerama support like crazy for struts and everything else too. this probably crashes but its been way too long without a commit.
very cool struts. partial struts actually are partial struts now. possibly way broken with xinerama?
only send configure notify when they requested a move, or if we are actually changing anything. that is: if they only request a resize and nothing changes, don't do anything and dont send a configurenotify. this fixes the emacs event storm also some new macros for rects
make keeping windows on screen much more clever
1) translate all of openbox's output 2) update copyrights. 3) make release. ok that part not quite yet.
only update the screen areas when a window actually has a strut (or when the strut changes), don't waste extra calls to screen areas, because it makes people redraw when they don't need to
update copyright step 2
the xinerama patch from john russell, modified a bit and merged the move_onmonitor with the already existing move_onscreen stuff, not sure if it actually works on xinerama since i dont have it.
yay no tabs in the source
add PARTIAL_SRUT_EQUAL
no tabs
add copyright headers, adjust --version output to include copyright, and --help output to not include version output.
add some interesection shit, and RECT_LEFT/RIGHT/TOP/BOTTOM
fix RECT_CONTAINS, name clash