Allow FillToEdge to grow when all its edges are blocked. This change points out how useless the return value from client_find_resize_directional() was, so it also removes that. When all edges are blocked, the FillToEdge action will try to grow all four edges agin without blocking any of them on their current edge. This more closely matches the behaviour of the GrowToEdge action.
Clean up the FillToEdge action implementation This extend the client_find_resize_directional() method to support two growing modes, and return a bool for whether it was able to grow/shrink. The client_find_resize_directional() method now takes an enum instead of a bool, with two growing modes. The old mode which always tries to grow, the a new mode that will only grow if the client's edge is not already at a grow stopping point (ie against the edge of another window).
Add window type to If as well This one required some extra helpers so is separate commit
Fix duplicate const warning
Allow window matching based on the group leader's name and class (Fix bug 5721) In Openbox 3.4 we used the group leader's WM_CLASS value when it was available. This prevents windows in the group from overriding with a specific value, however which is bad. More rationale can be found in http://icculus.org/pipermail/openbox/2010-September/006790.html Some applications (eg. Firefox) use command line flags to set the WM_CLASS property on the group leader but do not change the property on the mapped windows themselves. This makes matching these windows not possible in Openbox 3.5. We resolve this by exposing the group's WM_CLASS values alongside the individual window's values. We add _OB_APP_GROUP_NAME and _OB_APP_GROUP_CLASS properties along with "groupname" and "classname" attributes for the rc.xml application tag.
Make LeastOverlap placment replace the behaviour of Smart and address style nits
Allow client destroy notify functions to be removed based on the data associated with them.
Propagate _NET_WM_WINDOW_OPACITY to the frame window (bug #5132)
if no launch time is provided for an application, make one up. if the window is related to other existing windows and one of those windows was the last used then we will give it a launch time equal to the last user time, which will end up giving the window focus probably. else the window is related to other windows, but you are not working in them? seems suspicious, so we will give it a launch time of NOW - STEAL_INTERVAL, so it will be given focus only if we didn't use something else during the steal interval. else the window is all on its own, so we can't judge it. give it a launch time equal to the last user time, so it will probably take focus. this way running things from a terminal will give them focus, but popups without a launch time shouldn't steal focus so easily.
add a function client_is_oldfullscreen() that determines if a window is an "oldschool fullscreen window" or not. use this throughout. and allow oldschool fullscreen windows to move to 0,0 even with a strut there.
Remember the maximized state of a window when it goes fullscreen and try restore it after
Merge branch 'backport' into work Conflicts: configure.ac data/rc.xml openbox/client.c openbox/event.c openbox/focus_cycle.c openbox/focus_cycle_popup.c openbox/openbox.c openbox/prop.c openbox/prop.h openbox/screen.c parser/parse.c version.h.in
Redraw the focus cycle popup when the list of focusable windows changes, rather than closing it
Set up work for making a 3.5 prerelease. Set version stuff to 3.5.0-rc1. Copy the CHANGELOG from 3.4-working. Rename the obt-4.0 and obrender-4.0 pkgconfig stuff to obt-3.5 and obrender-3.5 Rename the "render" directory to "obrender" so that the public headers can be installed in <obrender/*>
Merge branch 'backport' into work Conflicts: openbox/config.c openbox/event.c openbox/prop.c openbox/prop.h openbox/screen.c openbox/screen.h
Fix the Focus/Activate actions to focus windows on other desktops correctly
Merge branch 'backport' into work Conflicts: openbox/actions/all.h openbox/actions/session.c openbox/client.c openbox/event.c openbox/grab.c
Fix client_activate() to work for internal Openbox menus client_activate() is a helpful way to focus a window on another desktop, but only Openbox is allowed to do such things, user messages cannot.
Merge branch 'backport' into work
Reload motif wm hints when property changes Google's chrome does this when you toggle window decorations. Based on patch in #4250 by Daniel Erat.