Commit graph

143 commits

Author SHA1 Message Date
Dana Jansens
85a1a0cfb3 don't validate inside client_focus. instead, validate before you call it! 2007-03-12 06:04:00 +00:00
Dana Jansens
d33f44cd86 Rewrite the stacking code. It's a lot faster now, I should think. It's def a more clever algorithm. It deals with group transients much better.
On that note, utility and menu and toolbar window types are now treated as group transients in terms of stacking and focus and such.
2007-03-12 02:24:40 +00:00
Dana Jansens
62a39c4c70 stacking has been made more reliable with groups and group transients.
this was a pretty invasive change in client.c though, so it may break things?

it did expose some bugginess in client_calc_layer, which is now better than ever, hopefully there isn't more to be found.
2007-03-11 16:58:19 +00:00
Dana Jansens
2c98204dfe make _NET_ACTIVE_WINDOW requests look at the timestamp when the user didn't
request it
2007-03-11 14:17:14 +00:00
Dana Jansens
19b480058e wow... this is a big commit...
all related to _NET_WM_USER_TIME and focus stealing prevention

a) add launcher startup notification. this means when you run something from
   the openbox menu or a key/mouse binding, that startup notification will go
   on in openbox and other applications like your panel or something
b) add the _NET_WM_USER_TIME property for windows
c) use the _NET_WM_USER_TIME data and startup notification to prevent focus
   stealing.
d) cookie party !! ! all are invited.
e) oh yeah, and pass around timestamps for a lot more things. like, when you
   run an action, send the timestamp for the event that is running the action.
   this is important for startup notification. this also affects menus.
f) yes.. cookies..

would it be a good idea to disable focus stealing prevention if a window takes
too long to load? i mean.. maybe after a certain length of time, a user can't be
expected to not do anything in any other windows, but would they still want the
new application to focus then? HMM. open question i guess..
2007-03-11 04:44:15 +00:00
Dana Jansens
9d6e390765 add the _NET_WM_USER_TIME property support. When focus_new is enabled, don't focus new windows if the user is doing something in another window since it launched. If we can tell when it launched, either from the _NET_WM_USER_TIME or from startup notification. 2007-03-11 02:06:34 +00:00
Dana Jansens
f6265e82e6 1) Remove support for the Urgent hint. This will no longer do anything within Openbox
2) Add support for _NET_WM_STATE_DEMANDS_ATTENTION. Yay!
2007-03-10 23:57:33 +00:00
Dana Jansens
78af5d15e9 this includes a number of things since my magnificent return....
1. some random compiling/style cleanups
2. some bigfixes
 - mislogic in per-window-settings and focusing new windows
 - use client_can_focus rather than checking variables for directional focus
 - MAYBE fix all those lock-ups forever. using event_curtime (a new variable) now instead of event_lasttime. event_lasttime is still used however when the event being processed did not have a time associated with it. this may or may not be a problem, and will be seen.
3. um.. i forget
4. oh yeah, 3rd party docks are now treated like the internal ob dock irt focus. that is, clicking on them won't pass them focus. this is going to be ratified as expected behavior in the wm-spec just now. if docks/panels want focus they can request it with _net_active_window, and then they can have all the focus they want! one day alt-tabbing around dock windows might be nice. but not until the ob dock is moved out into a separate application. going to have to add a wmapp selection and stuff for that though... ugly. who uses wmdockapps anymore !? someone must.. *sigh*
2007-03-02 02:23:00 +00:00
Mikael Magnusson
b18846db69 Add MoveFromEdge* actions, shorten client_directional_edge_search with some handy #defines 2006-10-31 03:33:21 +00:00
Mikael Magnusson
d9f14c1d01 update copyright step 2 2006-08-22 16:44:18 +00:00
Mikael Magnusson
4137779722 lollerskates 2006-06-09 14:54:18 +00:00
Mikael Magnusson
ff04e2c9a9 add the rest of the possible states to per app settings, and fix some mem leaks in the code that _set_ the per app list 2006-06-09 14:14:17 +00:00
Mikael Magnusson
8af51d8a1b add role matching to per app settings and fix a small memleak in the code that frees the per app list 2006-06-09 12:47:48 +00:00
Mikael Magnusson
de1559a094 move stuff around some more 2006-06-08 11:36:43 +00:00
Mikael Magnusson
829e746b4d fix programs showing their child windows outside the screen, but retain the possibility to put windows slightly offscreen with the -geometry argument (which is why i broke it in the first place) 2005-08-11 13:23:59 +00:00
Mikael Magnusson
335e8acbfc yay no tabs in the source 2004-03-21 01:03:00 +00:00
Dana Jansens
740c5b2a20 consistant glib type usage 2003-10-15 03:59:35 +00:00
Dana Jansens
b84a934ab7 provide function to tell if a client has any group siblings 2003-10-09 19:29:10 +00:00
Dana Jansens
f6ba1f27b9 halfway through client changes but...
should fix crashes irt actions in the action queue for clients that have been destroyed. now those actions are skipped or performed without a client as possible.
2003-09-28 06:31:00 +00:00
Dana Jansens
dfd524926e add client_raise and client_lower which just fire off actions 2003-09-26 18:15:58 +00:00
Dana Jansens
365940477b add some more client tree searching functions. make transients always get focused when a parent has focus, not just direct parents. 2003-09-26 07:08:07 +00:00
Dana Jansens
0a1b9352ca comment the client_search_transient function 2003-09-26 06:49:45 +00:00
Dana Jansens
b4fa843575 add client_set_undecorated().
add support for the _OB_WM_STATE_UNDECORATED state hint.
2003-09-25 23:07:15 +00:00
Dana Jansens
caca123b90 dont use the _OPENBOX_PREMAX window property anymore, save max and fullscreen pre-areas in the client struct 2003-09-25 22:47:48 +00:00
Dana Jansens
6538a5ccb2 move the code to find the window under the pointer out of focus.c to client.c 2003-09-21 21:25:23 +00:00
Dana Jansens
16f46c296d no tabs 2003-09-17 07:44:49 +00:00
Dana Jansens
c4e4760c41 add copyright headers, adjust --version output to include copyright, and --help output to not include version output. 2003-09-17 07:32:52 +00:00
Dana Jansens
3e9d050ffe save the sm_client_id just like saving other properties, dont query each time its needed 2003-09-15 06:50:25 +00:00
Dana Jansens
038735d627 add the startup_id 2003-09-03 20:39:42 +00:00
Dana Jansens
806a8c411f add a reconfigure action, also reconfigure on SIGUSR2.
support reconfiguring throughout the entire codebase.
2003-09-03 18:11:39 +00:00
Dana Jansens
5e5fdb1666 make the client destructor a GDestroyNotify 2003-09-03 08:10:51 +00:00
Dana Jansens
9d42df6ab4 add urgent actions
add some macros for moving/resizing clients
add 'vibrate' action
2003-09-01 02:02:40 +00:00
Dana Jansens
8e76e32863 add destructor functions for clients that you acn subscribe with, and use these instead of hardcoding special cases in the unmanage code 2003-08-30 17:46:23 +00:00
Dana Jansens
0964b804a1 restore the stacking order of a saved session 2003-08-25 07:48:28 +00:00
Dana Jansens
888c3d1f6a make activate take a here parameter 2003-08-14 05:57:45 +00:00
Dana Jansens
c1f0f7c40f small bugfix to the directional focus code.
add the client_directional_edge_search function.
2003-08-12 08:25:04 +00:00
Dana Jansens
4cd886e518 add partial struts tho they arent useful eyt 2003-08-02 06:25:32 +00:00
Dana Jansens
02c15aca65 add a function to retrieve the sm_client_id value 2003-07-31 08:04:20 +00:00
Dana Jansens
1aa0bc66eb improved ICCCM compliance!
a) send ConfigureNotify back to the client as required by the ICCCM in all sitatuations.
  b) send the corrent coords in the ConfigureNotify, including the border width
  c) remove the WM_STATE property when unmanaging a window
2003-07-30 06:19:15 +00:00
Dana Jansens
950516124f make those apps stay/map on screen!! fuck stupid apps. thats right im talking to you mozilla and you too java. 2003-07-28 18:06:55 +00:00
Dana Jansens
11cde9683d add client_search_transient which searches the tree from a client down for a client 2003-07-25 13:25:09 +00:00
Dana Jansens
81af5a8b0c add disabled buttons, instead of now showing buttons at all when they wont do anything, now show a disabled button instead. this severely breaks compatibility with blackbox themes since there is no good way to automiatically create a disabled button that i can think of, so if they dont exist in the theme you get black and white for the button.
when a window cant be resized, its handle is not removed but its grips are.

change allowing the user to disable individual decorations as that is overkill,
instead allow a toggle through the client.decorate boolean.
2003-07-10 23:27:02 +00:00
Dana Jansens
122d55fbad prefixing and capitalizing the StackLayer -> ObStackingLayer enum.
less includes in headers for less rebuilding on changes
2003-07-10 17:03:05 +00:00
Dana Jansens
7d943a950e prefixing and capitalization for the Frame->ObFrame struct and the Context->ObFrameContext enum and its constants. 2003-07-10 07:16:19 +00:00
Dana Jansens
5be23ec5a4 prefix Group to ObGroup 2003-07-10 07:03:40 +00:00
Dana Jansens
e4be1f860b prefix TRAN_GROUP to OB_TRAN_GROUP 2003-07-10 07:01:13 +00:00
Dana Jansens
4736c257a5 prefix and capitalize some more constants/enums in client.h (Function -> ObFunctions and WindowType -> ObClientType) 2003-07-10 06:59:39 +00:00
Dana Jansens
2477a38d2f rename the Client struct to ObClient 2003-07-10 06:38:42 +00:00
Dana Jansens
b42ef7362c add a mwm.h for the mwm hint structure and flags.
use proper prefixing and capitalization for the new mwm stuff.
2003-07-10 06:23:38 +00:00
Dana Jansens
276b2be581 add misc.h with some standard enumerations with proper prefixing and capitalizations.
use the new enums throughout.

provide keycodes and cursors through ob_cursor and ob_keycode functions, which use the new misc.h enums for picking the cursor and keycode.
2003-07-10 06:18:47 +00:00
Dana Jansens
6357583c39 rename 'xinerama' stuff to 'monitors' to be more generic and descriptive. 2003-07-10 05:44:23 +00:00
Dana Jansens
0719843c68 add client_search_top_transient.
keep transients all on the same desktop together. use client_search_top_transient where possible in client.c
2003-07-10 04:34:18 +00:00
Dana Jansens
34e819738b xinerama support 2003-06-27 04:20:30 +00:00
Dana Jansens
092616de9a rename pixel32/16 to RrPixel32/16 2003-06-21 02:00:42 +00:00
Dana Jansens
68cc6e30b8 remove the client_remaximize function, and replace it with the client_reconfigure function, which just calls client_configure with the window's current location and dimensions, user=TRUE and final=TRUE.
add support for the VIDMODE extension in client_configure, namely, fullscreen windows are positioned at the point of the viewport rather than at 0,0.
call client_reconfigure when uniconifying a window, so that fullscreen windows are put at the point of the view port.
2003-06-04 23:11:26 +00:00
Dana Jansens
4cb48bebb5 reverting the transient focus cycle change, its just not.. right. add the parent's title to the transient's for the popup instead of just relpacing it 2003-06-04 18:22:19 +00:00
Dana Jansens
e0fa57d21c allow focus_fallback to query if a client can be focused without changing the focus order on it 2003-06-04 17:16:50 +00:00
Dana Jansens
4d814a383b add actions for changing client layers to abov/below/normal 2003-05-22 02:22:43 +00:00
Dana Jansens
5a7953b36a 2 in 1 again..
a) directional focus actions
b) action system changes i.e. use structs/arrays for convertings strings to actions instead of gross if-else chains
2003-05-19 03:52:25 +00:00
Dana Jansens
a18c1697b1 make icons use pixel32 data, and image_draw takes pixel32 data.
client.c gets pixmap icons as a backup to netwm ones, and they are converted into pixel32 data.
2003-05-18 23:06:11 +00:00
Dana Jansens
993fc6226d 2 in 1 deal :\
client.c stacking.c: fixing looping transient case for group transient windows. now a window which is transient for a group is *not* transient for any other transient windows in the group (perviously the other window had to be transient for the group to be excluded, now it can be transient for anything).

client.c/h event.c render.c/h: adjustnig icon handling a bit. will be converting the legacy pixmap icons into rgba data so they can be handled the same as netwm icons.
2003-05-18 17:09:55 +00:00
Dana Jansens
b77e40e1c7 rename "Slit" to "Dock".
add config options to the rc3 for the dock.
create a window_map, add DockApps to the ObWindow types, use the window_map for translating windows into objects for event handling (only one lookup now) and remove the old maps (client_map, menu_map).
2003-05-16 18:10:10 +00:00
Dana Jansens
58cfbb7f84 Clients Menus and Slits are all 'ObWindow's now.
Stacking is done with ObWindows.
Slits add themselves to the stacking order, as do clients of course.
Added some macros for adding/removing to the stacking order.
2003-05-11 19:44:33 +00:00
Dana Jansens
d5eacc5642 add a client_activate function, use it for net_wm_active mesgs and for focus cycling. 2003-05-09 22:53:11 +00:00
Dana Jansens
f26f23de50 all my changes while i was offline.
better alt-tabbing. better transient handling. i dont even know. lots of fucking cool shit so WATCH the FUCK OUT.
2003-05-09 16:57:17 +00:00
Dana Jansens
92d3f2342d add helper functions for manipulating the focus_order list.
move the focus popup into focus.c, out of action.c
allow cycling to iconic windows, which are kept at the bottom of the focus_order lists.
2003-04-25 21:27:16 +00:00
Dana Jansens
b58268e01a make fullscreen decorations and functions be calculated by the setup_decor_and_functions func 2003-04-13 21:37:32 +00:00
Dana Jansens
64dac07d07 no fuck that it was working fine 2003-04-10 06:50:57 +00:00
Dana Jansens
cb444e37d2 make the TRAN_GROUP an unsigned long 2003-04-10 06:50:42 +00:00
Dana Jansens
a25b19a17f support for transients of groups 2003-04-07 08:45:52 +00:00
Dana Jansens
e6cc69ca04 support for transients of groups 2003-04-07 08:43:33 +00:00
Dana Jansens
5f42ecfacb track window groups
iconify all its transients when a window is iconified
2003-04-07 05:47:20 +00:00
Dana Jansens
db086ef336 put focus_cycle into focus.c, use it there in the action. improved it as well to handle odd cases like modal windows. added functions to client.c which are needed by the focus cycling routine. 2003-04-07 03:46:41 +00:00
Dana Jansens
cbbf90a718 change how rc parsing will work. a=b will be parsed in any [section] and given to a separate parsing callback. no more general config infrastructure needed/ 2003-04-05 20:27:03 +00:00
Dana Jansens
4398c7c168 add a shaded button 2003-03-31 22:58:54 +00:00
Dana Jansens
8ac5a60322 rm client_disable_decorations.. it already had an action.
add the action to the action_from_string func
2003-03-28 23:02:57 +00:00
Dana Jansens
8fb10d8d87 add client_disable_decorations 2003-03-28 22:59:26 +00:00
Dana Jansens
beb489feeb comment the new parameter 2003-03-28 08:11:55 +00:00
Dana Jansens
92bea590c0 let a window be 'moved' to a new desktop without actually show/hiding it. useful for sending a window when following it, so theres no flash/flicker 2003-03-28 08:11:02 +00:00
Dana Jansens
bf32b376b5 handle focus in the kernel, no more plugin 2003-03-27 23:10:22 +00:00
Dana Jansens
fef5d0d9bc use rgba icons for clients 2003-03-26 05:36:18 +00:00
Dana Jansens
3b14b587ef more focus improvements. everything seems to work! 2003-03-24 04:56:46 +00:00
Dana Jansens
687559cb2d yet more improvements to focus handling 2003-03-23 23:47:47 +00:00
Dana Jansens
9b514b3b61 add the client_kill function, and the kill action, and bind it to the middle mouse button on the close button. 2003-03-22 06:58:38 +00:00
Dana Jansens
dd6e27f2c3 rename the res_name and res_class members to name and class 2003-03-22 00:35:02 +00:00
Dana Jansens
9a4ccc919c add the client_set_focused function.
make focus state be changed internally immediately after calling the X functions to make it so, basically, assume their success. this elimiates races all over the place with our state vs the server's state.
2003-03-21 10:26:26 +00:00
Dana Jansens
db75d406ce rm the focused member from the client struct, it was redundant with the focus_client variable around 2003-03-21 08:18:39 +00:00
Dana Jansens
45f6d52712 save decor and functions per client for fullscreening! 2003-03-20 21:52:49 +00:00
Dana Jansens
bfea000a74 add a keyboard plugin 2003-03-18 05:29:01 +00:00
Dana Jansens
9b33f7ded6 stop using python internally. add an event dispatcher 2003-03-17 19:54:37 +00:00
Dana Jansens
7f561a6a7a make client_showhide a static function 2003-03-17 02:05:05 +00:00
Dana Jansens
216a04bdd0 speed up workspace switching by causing the minimal number of expose events (none for the hiding windows!) 2003-03-17 02:03:45 +00:00
Dana Jansens
f8a47de5ec merge the C branch into HEAD 2003-03-16 21:11:39 +00:00