summaryrefslogtreecommitdiff
path: root/openbox
AgeCommit message (Collapse)Author
2012-10-06Allow non-interactive focus cycling.Dana Jansens
Adds an <interactive>bool</interactive> option to the NextWindow and PreviousWindow actions. When it is false, the action is not interactive and will immediately switch focus to whatever the next focus target is. Removing the "interactive" flag from the focus_cycle() method, as it was unused previously, and the new code does not make use of it either. In order to be non-interactive it simply starts a focus_cycle then immediately ends it when the action ends. The "interactive" flag in focus_cycle() forced a linear cycling order which may not be what you want, so the new method is preferrable anyhow.
2012-10-06Add a $pointer execute variable substitution and make $wip and $pid ↵Dana Jansens
consistent (Fix bug 5758) $wip and $pid would output values for the current target window if there was one, but output nothing at all if there wasn't making the output difficult to parse. Changed to make these always output a 0 if there is no target. Added a $pointer variable that is replaced with the x and y coordiates of the pointer, separated by a space. Inspired by the work of Denis Kaganovich <mahatma@eu.by>.
2012-10-06Remove unused variableDana Jansens
2012-10-06Fix duplicate const warningDana Jansens
2012-10-06When a window is the focus target and it is removed from the focus order, ↵Dana Jansens
reset the focus cycling (Fix bug 5410) We were only doing this if a dialog was showing. But if it's the target, then a dialog is not relevant, we should always recompute the focus cycling. This avoids a crash when not using a dialog and closing a window during cycling.
2012-10-06Fix negative ResizeRelative values with terminal windows (Fix bug 5228)Dana Jansens
Inspired by patches from Brian Mock <mock.brian@gmail.com>.
2012-10-06Get the window's title in the fake-managed case since we apply app rule ↵Dana Jansens
matching (Fix bug 5277)
2012-10-06Allow windows created by execute actions to steal focus if the user isn't ↵Dana Jansens
interacting with another window (Fix bug 5419). When the execute action was run, we would say that the user had used the focused at that time. Then when a new window popped up, we'd think the user was busy in the current window and prevent the new one from steal focus. Now the execute action does not update the "user interacted with the focused window" timestamp anymore. So, if they aren't currently typing in some window when they trigger an execute action, and the window appears, it will steal focus.
2012-10-06Allow window matching based on the group leader's name and class (Fix bug 5721)Dana Jansens
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.
2012-10-06Allow loading of menu files outside of your XDG_CONFIG_HOME (Fix bug 5711)Dana Jansens
When the given file name can not be found in your XDG_CONFIG_HOME, ie in ~/.config/openbox, then try the file name directly. This means if you specify a menu file such as "/home/dana/helloworld.xml", openbox will try, in order: 1) ~/.config/openbox/home/dana/helloworld.xml 2) /home/dana/helloworld.xml And it will load the file you meant when it tries the second one.
2012-10-06Make LeastOverlap placment replace the behaviour of Smart and address style nitsDana Jansens
2012-10-06LeastOverlap placement option (Fix bug 5385)Ian Zimmerman
Adds a new placement algorithm that finds a place on the monitor that overlaps the least amount of windows as possible. Original patch by Ian Zimmerman <itz@buug.org>. Port to Openbox 3.5 by David Vogt <dv@adfinis.c>.
2012-10-06Use the nearest monitor when the search query rect does not intersect any ↵Dana Jansens
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.
2012-10-06Don't edge-warp with the cursor based on a monitor that does not contain the ↵Dana Jansens
pointer (Fix bug 4992)
2012-10-06Pick the monitor most relevant to a rectangle more cleverly.Dana Jansens
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.
2012-09-30Prompt should not always use the currently focused button as its result (Fix ↵Dana Jansens
bug 5518)
2012-09-30Don't strip leading whitespace from menu labels (Fix bug 4782)Dana Jansens
2012-09-30Allow client destroy notify functions to be removed based on the data ↵Dana Jansens
associated with them.
2012-09-30Fix prompt cleanup (was not going through the list correctly when freeing items)Dana Jansens
2012-09-30Select the menu item under the mouse when the mouse is moved (Fix bug 5237)Dana Jansens
2012-09-30Make ResizeRelative resize in terms of pixels for windows with resize ↵Dana Jansens
increments (Fix bug 5228) If the resize is less than the window's resize increment then we bump it up to ensure a resize does at least happen.
2012-09-30add menu_sort_entries() which sorts all entries in an ObMenuDana Jansens
this function sorts each group of entries that appear together between two consecutive separators (or ends of the list)
2012-09-30hide the menus before shutting them down on reconfigureDana Jansens
2012-09-30Fix for when the menu's update function returns FALSE and no menu is shown.Dana Jansens
The ObMenuFrame was not being freed, and the child pointer was being left pointing to the frame that was not visible.
2012-09-30Just put copyright starting year in README so we don't need to keep updating ↵Dana Jansens
it. Make --version match README.
2012-09-30Generate a fake leave event on actions that move windows (used to generate ↵Dana Jansens
another enter event?)
2012-09-30Ignore enters on windows that are raised over focused window while being mapped.Dana Jansens
2012-09-30Use the KeyCode to directly find the modifier mask. (Fix bug 5173)Dana Jansens
We were finding the KeySym first, and then converting back to a modifier mask. But KeySym on a key's release can differ from on its press, and we don't need them to determine the modmask from the keycode. [setxkbmap -option "grp:shifts_toggle"] turns Shift_L into XK_ISO_Prev_Group on key release, and Shift_R into XK_ISO_Next_Group.
2012-09-30Don't make desktop switching interactive when no mods used. (Fix bug #5203)Dana Jansens
Make mod state passing more consistent, and always give actions the full state instead of stripping sometimes. (They ended up expecting it stripped always).
2012-09-30Fix crash on unexpected NET_WM_MOVERESIZE_CANCEL messagesMikael Magnusson
gtk+ 3.4 apparently sends these randomly when you select text in a GtkEntry. This also fixes bug #5460.
2011-10-16Fix window width/height going less than 1 on some platforms (bug #5246)Dana Jansens
2011-10-16Fix maximized windows and such after screen resizingsDana Jansens
2011-10-16Hear screen resizes when they don't change the root window (cloning)Dana Jansens
2011-10-16Check the return value for launching the startup command.Dana Jansens
Copy/paste error?
2011-10-16respect the active/mouse options for monitor placement, and use ↵Dana Jansens
ObMonitorPlace for per-app too
2011-10-16Allow per-app settings to pick a monitor for a window without choosing a ↵Dana Jansens
position in it.
2011-10-16Add "active" and "primary" options to the <monitor> placement option for ↵Dana Jansens
per-app settings (bug #5180)
2011-10-16make undecorated windows place according to their undecorated state (bug #5179)Dana Jansens
splits client_setup_decor_and_functions() into 3 functions. 1. add client_setup_default_decor_and_functions() - called from client_get_all() to get the maximum decor/functions that will be available for use by the client. 2. add client_setup_decor_undecorated() - sets up the client's undecorarted decor if the flag is set by the per-app settings or session state. - we do this before setting up the frame so the frame reflects the window as it should be when getting placed. 3. client_setup_decor_and_functions() - calls the above 2 to perform the same functions as before. - added to client_apply_startup_state() so that we can ensure it was run fully at least once in the mapping process, since it is not called in client_get_all() anymore.
2011-10-16it would seem this cannot return NULL nowDana Jansens
It will get the primary monitor if there is not monitor under the pointer. But assert so it's clear something went wrong if this does happen. Note that there was previously no check for the return value even though the comment claimed there should be.
2011-10-16Propagate _NET_WM_WINDOW_OPACITY to the frame window (bug #5132)Dana Jansens
2011-10-16Specific border width/color for undecorated active/inactive windows (bug #4889)Carlos Pita
The attached patch adds three theme options with backward compatible defaults: undecorated.border.width defaults to border.width window.undecorated.active.border.color defaults to window.active.border.color window.undecorated.inactive.border.color defaults to window.inactive.border.color
2011-10-16Fix crash when keyboard map changes and no keybindings exist.Dana Jansens
Don't assume old tree is non-null and start rebinding it.
2011-10-16Change default doubleclick timeout to 500ms and keep track of where last ↵Mikael Magnusson
click was Bug #5152 - "mouse double-click time is too low by default - 200ms" We only use the doubleclick in one place in the default configuration, for doubleclicking titlebars to maximize windows, so any negative impact of increasing the timeout should be minimal, especially with the addition of requiring the two clicks to be in the same place. Doubleclicks are hardcoded to occur within 8 pixels for now, it doesn't seem worth it to add a config until someone complains. A possibility is using the drag threshold, but some people have that set very low so it could be hard to doubleclick then.
2011-10-15Parse all the actions in a single menu itemDana Jansens
2011-10-06Don't show prompts inside the message handler to prevent recursionDana Jansens
Showing prompts causes messages to be created which causes the glib message handler to abort(). Save the messages and show them when done all other processing for the current event.
2011-10-05Make "no" a valid choice for the dialog option in cyclewindows.c.Dana Jansens
It is the same as "none" for backward compatibility (it used to be a boolean).
2011-10-05Update copyright notice in --version outputMikael Magnusson
2011-10-05Consistency with helper/modal windows and multiple desktops.Dana Jansens
When focusing a window, bring its helper windows. This happened before when switching its desktop, but if you have 2 windows on different desktops and switch between them, the helpers should come to both when they are being used. When a new helper/modal window maps on a different desktop and you are using the application, then the helper/modal window is moved to the current desktop to be with the application you are using.
2011-10-05Fix focus stealing for changing desktops/Use timestamp for user input eventsDana Jansens
Change the logic for when to allow stealing focus across desktops. - It was possible to call event_time_after() with a CurrentTime in the old code. - It would disallow a user requested change which is crazy. - It would change desktops on you when a new window appeared but this is generally not desirable. event_source_time() is supposed to give the time which the user made things happen. we leave it at 0 for user-input events right now which means stuff like changing desktop doesn't save any timestamp at all. we should use the timestamp from x for user-generated events.
2011-08-02Separate theme options for osd prompt buttons.Carlos Pita
I managed to keep backwards compatibility without really cluttering the code so here is the patch http://bugzilla.icculus.org/show_bug.cgi?id=4874 too. Please keep in mind that this is my first piece of code for openbox and that I'm not a die hard openbox user (yet), not to tell the patch was not exhaustively tested. Anyway I think it's pretty much in a good shape but any criticism will be welcome. Basically the patch add the following theme options for controlling buttons in osd prompts: %%%% colors % % for the text inside the button osd.button.unpressed.text.color osd.button.pressed.text.color osd.button.focused.text.color % % for the line art around the button % (if you don't wan't the box just make box.color = bg.color) osd.button.pressed.box.color osd.button.focused.box.color %%%% textures % osd.button.unpressed.bg osd.button.pressed.bg osd.button.focused.bg The buttons can be in three states: unpressed: neither clicked nor selected focused: selected but not clicked pressed: clicked (and of course selected) I discarded the previous distinction between press and pfocus as in fact it was only a formal distinction, in that both appearances mimicked each other in every sense. It think that it was just inherited from the way titlebar buttons are managed so I decided to simplify it a bit. All the options default in a way that preserves backwards compatibility: osd.button.unpressed.text.color -> osd.active.label.text.color osd.button.pressed.text.color -> osd.active.label.text.color osd.button.focused.text.color -> osd.active.label.text.color osd.button.pressed.box.color -> window.active.button.pressed.image.color osd.button.focused.box.color -> window.active.button.hover.image.color osd.button.unpressed.bg -> window.active.button.unpressed.bg osd.button.pressed.bg -> window.active.button.pressed.bg osd.button.focused.bg -> window.active.button.hover.bg Notice that a good deal of locs where added to theme.c but in compensation prompt.c is pretty much simpler now because the appearances and textures are created while loading the theme.