Dana Jansens [Tue, 18 May 2010 22:47:54 +0000 (18:47 -0400)]
allows a window to unmax by resizing.
makes "clever" use of the client's pre_max_area values to allow this to happen
without flashing, and preserving them in case the user cancels the resize
after it has become unmaximized.
Dana Jansens [Tue, 18 May 2010 01:58:44 +0000 (21:58 -0400)]
set the interactive action to NULL before doing its cleanup phase
if the cleanup ends up cancelling the "current interactive action", it would
cause the end function to be called again, which sucks. for instance if the
cleanup function uses the Focus action. this prevents the unwanted loop
into the interactive action cleanup.
Mikael Magnusson [Fri, 16 Apr 2010 16:04:24 +0000 (18:04 +0200)]
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
Dana Jansens [Tue, 11 May 2010 23:01:46 +0000 (19:01 -0400)]
add cleanup functions to the client list menus that removes everything from them when they are not being shown (saves iterating thru the list uselessly when a client is unmanaged)
Dana Jansens [Tue, 27 Apr 2010 22:45:22 +0000 (18:45 -0400)]
fix XSYNCronization of resizes (especially with two monitors).
1) a ConfigureNotify must always follow a Sync notification
2) determine the final size of the window with its position else struts are not applied properly for (partly) maximized windows
3) set the sync counter to a value when managing a new window
Dana Jansens [Tue, 27 Apr 2010 21:24:51 +0000 (17:24 -0400)]
make sure clients stay on screen when the root window changes size, and maximized/fullscreen windows must be on some monitor or it doesn't make much sense (and asserts)
Dana Jansens [Fri, 23 Apr 2010 15:54:09 +0000 (11:54 -0400)]
putting events on the event queue does not send them back to the server. it was just going to get ignored the next time around cuz the window wouldnt be in our list of clients
Dana Jansens [Sat, 17 Apr 2010 02:23:37 +0000 (22:23 -0400)]
event_curtime is replaced (publicly) by event_time()
This function never returns CurrentTime, which is nice, cuz using CurrentTime for XSetFocus always sucks.
If the current XEvent did not have a timestamp, then event_time() will find one. It finds the first timestamp available in the X event queue, meaning the earliest timestamp >= the current (nontimestamped) event. All future events should have a timestamp >= event_time(), so using this in XSetFocus() should not mess up any future calls we make to it.
This change seems to work well, as it appears to fix bug #3648.
Dana Jansens [Sat, 17 Apr 2010 01:19:50 +0000 (21:19 -0400)]
When determining the current timestamp, try get something a lil more accurate
Get the first timestamp from the event queue, rather than (potentially) the
last.
also treat it as the actual event_curtime, meaning it is used when focusing a
newly mapped window etc.
Dana Jansens [Tue, 30 Mar 2010 02:38:05 +0000 (22:38 -0400)]
parse some of the .desktop stuff into an ObtLink structure
localized names still don't work.
most of the app-specific stuff isn't done yet.
categories aren't handled yet (to only show in/not show in some category)
Dana Jansens [Tue, 30 Mar 2010 00:36:35 +0000 (20:36 -0400)]
if a launch time isnt there (like for client_activate) assume the window launched before the last desktop switch, not after. ie don't change desktops if you're not sure.
Dana Jansens [Fri, 26 Mar 2010 01:10:45 +0000 (21:10 -0400)]
Add a new ObtLink type, which is going to be a generalization of a .desktop entry.
Move the .desktop file parsing details into obt/ddparse.c, which generates
some hash tables holding the data of the file.
Add a new obt/link.c which will build an ObtLink from a parsed .desktop file,
and may support other ways to create these links in the unforseeable future
David Barr [Tue, 9 Mar 2010 12:00:02 +0000 (13:00 +0100)]
Add menu seperator style to Clearlooks
The default themerc is quite old and does not include the slightly newer
option to theme the menu seperator, here is a patch to fix that and some
very trivial tweaks to overall theme to better match the metacity/gtk
version.
Dana Jansens [Mon, 1 Mar 2010 21:30:06 +0000 (16:30 -0500)]
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.
Dana Jansens [Mon, 1 Mar 2010 20:55:27 +0000 (15:55 -0500)]
when an app tries to move to 0,0 and there is a strut there (java swing!), move it to inside the strut instead (unless it is an oldschool fullscreen app)
Dana Jansens [Wed, 17 Feb 2010 21:11:36 +0000 (16:11 -0500)]
revamp the autostart functionality, so autostart apps launch after openbox.
add /usr/libexec/openbox-autostart which runs the global/user scripts and
launches /usr/libexec/openbox-xdg-autostart (which runs .desktop autostart
stuff)
make openbox-session call openbox with --startup option, to make openbox launch
/usr/libexec/openbox-autostart *after* it is initialized.
add /etc/xdg/openbox/environment and ~/.config/openbox/environment files to let
user change environment variables (locale) for their Openbox session, which
openbox-session loads before running openbox.
Dana Jansens [Mon, 15 Feb 2010 17:33:33 +0000 (12:33 -0500)]
dont trust the _NET_ACTIVE_WINDOW timestamp. (fixes bug #4519)
if we decide to focus the window, do not use their provided timestamp.
chromium gives a very old timestamp, which means we think we're focusing the
window but it never actually gets focus, leading to inconsistent behaviour by
openbox. use the timestamp for making decisions about passing focus if you
want (we dont right now), but not for the XSetInputFocus call.