Commit graph

741 commits

Author SHA1 Message Date
Dana Jansens
811fa21940 remove the edges_hit_layers_below option. don't use windows in other layers for resistance 2007-05-12 18:56:56 +00:00
Dana Jansens
b2006b8b45 don't show handles on windows that cannot resize 2007-05-11 21:31:19 +00:00
Dana Jansens
b23476ed58 fix for circular transiency 2007-05-11 20:45:26 +00:00
Dana Jansens
2baad3abee oops, debug prints 2007-05-11 05:55:45 +00:00
Dana Jansens
8432416d4e pick the closest icon instead of always a smaller one 2007-05-11 05:54:57 +00:00
Dana Jansens
75372cd4a7 set the default window gravity to NorthWest.
only put the bare minimum inside the server grab.
adjust the frame decorations in client_manage instead of frame_grab_client
remove the last parameter from client_configure_full and just determine it from the other state available.
send configurenotifies at all the right times.
make windows get restored to their position properly when they have a border
2007-05-11 02:46:59 +00:00
Dana Jansens
65d50861ad when un-showing the desktop if a window is getting shown, iconify the others so just the one is shown 2007-05-10 23:22:54 +00:00
Dana Jansens
f1f946ea02 stacking fixes for layers 2007-05-10 20:23:27 +00:00
Dana Jansens
4a34c7ddb2 don't get the layer from the group like that. let new windows go in their default layer. they are already kept above their parents. 2007-05-10 17:15:41 +00:00
Dana Jansens
11dd7db876 make the frame before you use the frame.. 2007-05-10 05:25:34 +00:00
Dana Jansens
083a7565c7 set the session stuff before trying to apply per-app settings.
set the decor/functions after restoring all the stuff from session/per-app too
2007-05-10 05:21:05 +00:00
Dana Jansens
9830440643 make restacking much better, yay
no more cludge using actions to raise windows. when a window changes layer it
uses add_nonintrusive now so it won't cover the focused window. this way
fullscreen windows when they drop down, don't cover up the new focus target.

fix add_nonintrusive so that if the window is focused it gets added to the top

add back support for ConfigureRequest restacking, this time properly though,
using all the detail and sibling modes. but when windows use this to raise they
are using some old business and we're going to assume they actually want to
activate instead. this means firefox works nicely. yay.

ubuntu's firefox has been made to just stop raising entirely though. !
2007-05-10 00:57:35 +00:00
Dana Jansens
66afa1dceb when a window is fully maxed, make clicking on the titlebar past the edge buttons count as clicking on the buttons 2007-05-09 22:21:28 +00:00
Dana Jansens
f03eef2795 mem leak 2007-05-09 21:27:45 +00:00
Dana Jansens
7f262bc2a0 add support for _NET_REQUEST_FRAME_EXTENTS 2007-05-09 20:13:20 +00:00
Dana Jansens
851555348e support for _NET_WM_USER_TIME_WINDOW round 2 ! yay abstraction 2007-05-09 17:58:58 +00:00
Dana Jansens
cdb108c76d add support for _NET_WM_USER_TIME_WINDOW. round 1 ! ding. 2007-05-09 17:01:30 +00:00
Dana Jansens
5aea44adc9 punctuation 2007-05-09 03:41:05 +00:00
Dana Jansens
48d7045208 update the client menu when you do stuff without closing it.
but this means we can't use actions in it. oh well?
can kill the desktop notifiers now too. yay for more obvious code paths.
2007-05-08 23:50:13 +00:00
Dana Jansens
709ebbb6a2 let you move splash screens if you are so inclined 2007-05-08 22:56:29 +00:00
Dana Jansens
d074b11bf9 let windows that cant iconify still iconify with their parents, but not non-normal windows.
let you focus windows that wouldnt normally by clicking on their decor (if they have any)
2007-05-08 22:53:09 +00:00
Dana Jansens
f0e5332b4a but deiconify 2007-05-08 22:36:52 +00:00
Dana Jansens
370b5ba27d dont iconify if you can't 2007-05-08 22:36:26 +00:00
Dana Jansens
b0f43a1159 don't focus splash screens and toolbars and menus when you click on them. or enter them. 2007-05-08 22:29:39 +00:00
Dana Jansens
9782122339 try again. merge r6177-6182 from 3.4-working 2007-05-08 22:03:56 +00:00
Dana Jansens
1e4215c5c6 merge r6176-6182 from 3.4-working 2007-05-08 21:57:36 +00:00
Dana Jansens
aae4f66f68 recalc the layer when above/below changes 2007-05-08 12:22:28 +00:00
Dana Jansens
cc9ef6f22d dont check if relatives have focus. gtk apps all set application even when its from a user event 2007-05-08 02:33:20 +00:00
Dana Jansens
e4cffb6459 redo how a window checks if it can activate.
added the bahavior that.. if an application is the source of the request, it will only move focus if something related to it has focus already (and user time checks out)
2007-05-08 01:59:23 +00:00
Dana Jansens
de82c4a5df i dont like this "application window" concept. swap it with "helper" windows instead which are the inverse. helper windows are utility/menu/toolbar windows. 2007-05-08 01:31:51 +00:00
Dana Jansens
ebabf3943c make helper windows share desktops with all their application top level windows 2007-05-08 01:25:30 +00:00
Dana Jansens
1fa08abd9c um... hide the client menu when the window changes desktops. its not visible anymore (probably..) and no send to menu wont be wrong too. 2007-05-07 23:48:05 +00:00
Dana Jansens
280529221e add a notifier for clients changing desktops. use it to update the send-to menu if it changes. it does this by closing/opening the menu.. thats about the best we can do tho with this menu code without huge changes 2007-05-07 23:26:22 +00:00
Dana Jansens
edf29cfe73 when a window becomes transient for its group, it needs to have group transients removed from itself 2007-05-07 17:07:35 +00:00
Dana Jansens
13df16a681 windows on other desktops are iconic state too 2007-05-07 03:16:45 +00:00
Dana Jansens
f138bd8007 this had changed for the animation stuff but it is no longer needed i think. also in show desktop mode, windows aren't iconic state they are just "behind" the desktop. 2007-05-07 03:10:05 +00:00
Dana Jansens
f506cbceae the session properties are not set on the group leader, they are set on the "client leader" which is in the WM_CLIENT_LEADER property. also they are all set when the window maps, and not to be changed thereafter. 2007-05-07 00:10:15 +00:00
Dana Jansens
b02947c09f client machine and wm_command can be set on the group leader 2007-05-06 23:37:30 +00:00
Dana Jansens
2c507a7207 missed some stuff? 2007-05-06 22:58:51 +00:00
Dana Jansens
6cd5f7ea38 document the per app settings in rc.xml.in. some xsd fixes. add the "default" option to all the per-app settings which is the same as not putting it in there at all. 2007-05-06 22:04:55 +00:00
Dana Jansens
3c4d73c484 save session state for old clients that dont use XSMP. more session improvements. with ksmserver we can save a few things before the clients go messing with stuff during the interactive phase. 2007-05-06 11:14:20 +00:00
Dana Jansens
0fc06816aa don't make the desktop fullscreen 2007-05-06 09:10:09 +00:00
Dana Jansens
277db2822d a bunch of thigns got squashed into this commit.. sorry..
1. soem bug fixes for window stacking
2. clarify some functions behavior with their names
3. add (untested) support for legacy fullscreen apps. i have no idea what they do on a multihead xinerama setup though and if this would help there or need some changes.
2007-05-06 08:32:03 +00:00
Dana Jansens
a7f65a818c add an allDesktops option to Next/PreviousWindow to alt-tab across all desktops. 2007-05-06 05:51:08 +00:00
Dana Jansens
eac3a64917 more restrictive to keep clients on screen in more cases 2007-05-06 05:30:12 +00:00
Dana Jansens
1bf9de3809 refactor all the session stuff. yay, it works properly now.
make sessions save the desktop being displayed. can we get rid of config_firstdesk now?
refactor startup a bit. focus the window that was focused when we were restarted.
have clients properly restore their session state.
add undecorated to the saved session state for clients.
2007-05-06 05:19:19 +00:00
Dana Jansens
8a99fedecd prepend is faster 2007-05-05 19:27:31 +00:00
Dana Jansens
3409148047 fixes to the properties and net_supported. a bunch weren't supported. better checking at runtime to make sure everything is in the atom. 2007-05-05 18:19:26 +00:00
Dana Jansens
378adaa94f yay. way way cleaner code for iconify animations. let people show/hide the frame logically and it will do everything except during animations the frame will show what it needs to for visual display. 2007-05-05 16:53:48 +00:00
Dana Jansens
b5e597f1b3 lots of fixes for the iconify animation. i think it should all work perfectly now ?
one change in action.c may affect bindings... THIS COULD BREAK CURRENT CONFIG FILES. ya.
so, if you used a press binding and it moved the window, no enter event will be generated for that anymore because you are holding down the button when the window moves. if you don't like that then use a click binding instead.

1
2007-05-05 16:16:26 +00:00
Dana Jansens
08e42acaad animate iconify/reestore. yeah. 2007-05-05 05:58:35 +00:00
Dana Jansens
fde5ca09e9 when restoring from show-desktop mode because a window is going to be focused, then don't restore focus how it was before showing the desktop. 2007-05-05 02:48:39 +00:00
Dana Jansens
fce7d9b21e and some more transient fixes 2007-05-05 01:17:05 +00:00
Dana Jansens
1046c19fda more fixes for the transient tree 2007-05-05 01:12:59 +00:00
Dana Jansens
0c15af505f unused variable 2007-05-05 00:48:51 +00:00
Dana Jansens
2713831371 missing paranthesis 2007-05-04 23:30:13 +00:00
Dana Jansens
431035df66 continuation of r6039 in all respects 2007-05-04 23:15:08 +00:00
Dana Jansens
7ff21ad74f add the maginificent client_update_transient_tree.
add a whole lot of comments ! i think like half of this commit is comments
speed up mapping windows a little! less re-updating of the transient info by far.
and... yeah fix the crash created from r6035.
2007-05-04 22:50:53 +00:00
Dana Jansens
15ec358151 group transients werent getting added to their parents 2007-05-04 16:14:16 +00:00
Dana Jansens
b5161f8032 revert r6029, as it didnt fix anything.
however this patch does fix the aforementioned problem.
actions need some reworking... yeah... later...
2007-05-04 07:21:22 +00:00
Dana Jansens
a823e4786e dont move windows away from omnpresentness when deiconifying them 2007-05-04 07:19:21 +00:00
Dana Jansens
e84fb1b052 drop the DoNotPropogate thing. metacity doesn't set it at all, and i cant tell any difference in the events generated without it.
grab mouse buttons on the client window itself for client bindings. this fixes the weird "click and drag doesnt work when the window is focused" behavior ive been seeing with kdesktop. hooray !
2007-05-04 04:47:43 +00:00
Dana Jansens
07af4a6184 some improvements on how group transients get their transient pointers, needed after r6022. 2007-05-04 04:25:44 +00:00
Dana Jansens
147f83fe3c this is gross... i think it can go away from other changes... if openbox goes into infinite loops.. then it needs to come back ! 2007-05-04 04:08:31 +00:00
Dana Jansens
02dda1ef65 set the usertime on windows if they dont provide one, to something reasonable. 2007-05-04 04:06:43 +00:00
Dana Jansens
b71f1cd6a5 from r6017, we no longer need to fallback in client_unmanage. yay 2007-05-04 02:48:23 +00:00
Dana Jansens
00bf97aecd not much.. some debugs and a nicer if statement 2007-05-04 02:47:10 +00:00
Dana Jansens
5784f11132 add the notion of "application windows" meaning normal or dialog type windows.
let you alt-tab to non-application windows when they dont have an application window in their group
2007-05-03 20:57:40 +00:00
Dana Jansens
9c19d7f677 find_on_screen takes client width/height, not frame 2007-05-03 03:18:56 +00:00
Dana Jansens
d7108df02b when deiconifying, deiconify all transients, not just direct ones 2007-05-03 00:50:40 +00:00
Dana Jansens
80117db6c4 turn on demands_attention when urgent gets set, and turn it off when urgent is removed, for those apps that think it is 1917 or something 2007-05-02 23:03:43 +00:00
Dana Jansens
97cbacd9e4 make keeping windows on screen much more clever 2007-05-02 02:03:06 +00:00
Dana Jansens
564b727966 fix drawcontent=no resizing 2007-05-01 12:17:37 +00:00
Dana Jansens
cad10d8b6d some old changes to grav.c test, it wasn't a valid test before.
when a window gets reconfigured, try keep it on the monitor if it was before.
2007-05-01 05:02:26 +00:00
Dana Jansens
55d2916c1e a whole lot of changes to the moving/resizing code. it was broken for non-northwest gravities. now it is not. at least, that is the idea. 2007-05-01 04:46:29 +00:00
Dana Jansens
1c4c2b92a0 focus_client is already nulled from the fallback, and use client_focused for niceness in the future 2007-04-26 06:14:09 +00:00
Dana Jansens
b673823d0b have to fallback in client_unmanage, until we figure out a way to hear those focusin events without conflicting screens 2007-04-26 06:10:13 +00:00
Dana Jansens
d9b25d4884 add group transients to other transients who arent group transients. is that english? YEP 2007-04-26 02:32:50 +00:00
Dana Jansens
e896709c90 when windows disappear dont move focus from enter event, ever. 2007-04-26 02:21:27 +00:00
Dana Jansens
f6b049cd38 pointer type changed a long time ago 2007-04-25 00:50:20 +00:00
Mikael Magnusson
fb2493115f only grab keybinds on the root window, not every client window 2007-04-24 21:45:43 +00:00
Dana Jansens
d19c184b2d set the client's user_time when it gets activated 2007-04-24 19:55:48 +00:00
Dana Jansens
0116d82463 don't activate and change desktops if the client's not on the current desktop and its user_time is older than the last time you changed desktops 2007-04-24 19:53:50 +00:00
Dana Jansens
ca8665e309 fix a comment 2007-04-24 19:26:48 +00:00
Dana Jansens
8446e50b7a use client_activate to activate newly mapping windows. this means that if a window maps on another desktop and is going to be activated, you will end up on that desktop 2007-04-24 19:20:10 +00:00
Dana Jansens
ac241a8235 set the default icon onto windows which don't provide one 2007-04-24 15:56:37 +00:00
Dana Jansens
0771964c0f set the max settings properly, was setting max_vert for both.
make sure the desktop property is set when per-app settings change it
2007-04-24 14:58:29 +00:00
Mikael Magnusson
e86900bd53 fix resizing when drawContents is off, and I think an ifdef was a bit too high up 2007-04-24 12:18:53 +00:00
Dana Jansens
c6fe4f8d8f focus_order_remove is called in a few places. move the check for unsetting focus_client into client_unmanage. 2007-04-24 06:41:04 +00:00
Dana Jansens
ad852b6b56 add support for _NET_WM_SYNC_REQUEST 2007-04-24 06:30:16 +00:00
Dana Jansens
7ae95e4660 save windows' colormaps rather than querying them from the server every time you focus it 2007-04-24 01:29:53 +00:00
Dana Jansens
3a91527fdf hm, that was a silly error. the propogate mask shouldnt get the Hint thing in it. 2007-04-24 01:08:09 +00:00
Dana Jansens
a488360f48 add the PointerMotionHintMask everywhere, we dont need every mouse event 2007-04-24 01:00:27 +00:00
Dana Jansens
268c87ed9e in shrinking resize the frame before the client 2007-04-24 00:02:51 +00:00
Dana Jansens
5316bc6c3e 1. remove some old event handling that was not used at all. yay less bandwidth.
2. make the client padding color show during resizes with drawContents off
2007-04-24 00:00:11 +00:00
Dana Jansens
1a005d7291 place transients without a parent in the middle of the screen
dont use non-normal windows as parents
2007-04-23 23:46:13 +00:00
Dana Jansens
b4eecc51b5 focus_client was becoming invalid if the focused client was unmanaged. 2007-04-23 23:11:33 +00:00
Dana Jansens
9f11e2af6b cycling between dock windows now possible with the <panels>yes</panels> option 2007-04-23 22:40:33 +00:00
Mikael Magnusson
9e7a240dfd include the header that has gethostname 2007-04-23 19:02:33 +00:00
Mikael Magnusson
141c249b8c show the hostname of forwarded clients in the titlebar 2007-04-23 18:46:19 +00:00
Dana Jansens
a82c1efeed wasteful syncing 2007-04-23 02:00:33 +00:00
Dana Jansens
7e0d660b8b stop listening to events on clients that are being unmanaged before generating new events 2007-04-22 22:56:53 +00:00
Dana Jansens
037654f3f8 use ignore enters instead of removing them from the queue 2007-04-22 16:48:35 +00:00
Dana Jansens
27773e1cb7 don't grab the pointer during interactive events. this allows you to alt-tab during a dnd. 2007-04-22 15:22:25 +00:00
Dana Jansens
a70633d42a eat enter events after unmanaging a window
change how focus falls back for windows being unmanaged, don't fall back immediately, instead wait for the focus out event and use it (break stuff maybe! yay)
2007-04-22 13:53:28 +00:00
Dana Jansens
6e7abeb860 engrish 2007-04-22 04:35:23 +00:00
Dana Jansens
8a972b3879 ignore BadMatch errors that can't be avoided 2007-04-21 21:36:02 +00:00
Dana Jansens
0e9bd66b75 fixes for transients
1) don't count non-normal windows as parents when placing/stacking transients
2) in stacking.c, when a window is transient for the group but has no parents, then don't loop forever looking for its parents
2007-04-21 21:32:21 +00:00
Dana Jansens
d713bdf462 remove the client_time_heap thing. actually its better to just use the user_time on the currently focused window I think. that will handle panels and things too. 2007-04-20 05:22:23 +00:00
Dana Jansens
90cd9c6219 get rid of global client_last_user_time variable.
add ObClientTimeHeap. This is a max-heap of the clients based on their user times. this only includes the clients whose user time is not CurrentTime. the maximum from this heap replaces the client_last_user_time variable, so that you always have the latest time, not the last time that was changed.

hoefully it works, so far it seems to.
2007-04-18 19:22:59 +00:00
Dana Jansens
64dda2375e saved session information overrides per-app settings, because that's how you set it up in the session 2007-04-12 14:54:54 +00:00
Dana Jansens
33c469f453 set the desktop from per-app-settings properly, i think.
also fix a compiler warning.
2007-04-12 14:47:54 +00:00
Dana Jansens
7a1a6da849 better synthetic configurenotify handling. in particular..
http://bugzilla.gnome.org/show_bug.cgi?id=399552
on unmap, when we move the client window, we need to send a synthetic configurenotify.
2007-04-12 14:44:17 +00:00
Dana Jansens
c03c08415f don't fallback when a window is hidden right away, it's redundant, we'll get a focusout for the window after the unmapnotify anyways.
show new windows when switching desktops before hiding the old windows.
2007-04-12 02:26:26 +00:00
Dana Jansens
7059cde13b http://mail.gnome.org/archives/wm-spec-list/2006-May/msg00000.html
Send ConfigureNotify events when a window is mapped at the position it has specified. When we add decorations, the window gets moved in reference to the root window, so it needs to be told.
2007-04-05 03:59:24 +00:00
Dana Jansens
0eaf2d15e7 fully maximize windows all the time. size increments are preferred sizes not required ones.
-- http://tronche.com/gui/x/icccm/sec-4.html#s-4.1.2.3
2007-03-30 04:37:53 +00:00
Dana Jansens
00ddaf06bb can't use (unsigned)-1 for a max time, because timestamps wraparound and stuff. user the last_user_time as a default for new windows instead. 2007-03-28 19:57:07 +00:00
Dana Jansens
33cc572402 drop some wasted client_validates. 2007-03-28 02:00:10 +00:00
Dana Jansens
d20f84f5de more handling time wraparounds 2007-03-28 01:53:37 +00:00
Dana Jansens
339d767044 handle time wrapping around. 2007-03-28 01:52:06 +00:00
Dana Jansens
eb2a0feb01 watch for reverttoparent reverting to the root window, which will create a DetailInferior focusin event on root.
adding some debug messages also which I am using..
2007-03-24 23:19:45 +00:00
Dana Jansens
c4732aeed2 2007-03-24 17:17:02 +00:00
Dana Jansens
e77353f0cd clean up the title getting function 2007-03-24 17:06:19 +00:00
Dana Jansens
4c2b16e72d kill window title numbering...
probably it was a dumb idea all along. you're not picking the numbers yourself and you're probably not remembering which window they apply to and the focus indicator thinger is much more clever than numbers
2007-03-24 17:01:40 +00:00
Dana Jansens
fb3d2033ba not passing timestamps sometimes and not others. set event_curtime when client messages provide a timestamp. 2007-03-19 17:59:16 +00:00
Dana Jansens
5fa443efc8 oops, logic error 2007-03-17 20:06:16 +00:00
Dana Jansens
73dac2b9b9 fix for bug introduced in revision 5643. logical size is supposed to be updated only when the window is resized. 2007-03-16 19:14:53 +00:00
Dana Jansens
adc5675823 oh, 2 things in this commit..
1) THIS ONE IS IMPORTANT: don't set client->iconfied if the window is not actually going to be allowed to iconify. heh!

2) changes to focus fallback to avoid crashing and to avoid losing focus all at the same time.
2007-03-14 15:51:21 +00:00
Mikael Magnusson
768ce7b456 move stuff around in client_unmanage to maybe make closing windows a bit nicer 2007-03-14 14:17:31 +00:00
Dana Jansens
5f7ffb00ba refix for managing iconic windows, without having the frame map which caused flashing.
instead, keep track of if the frame has been mapped yet. if it hasn't and it is getting hidden, then make sure to unmap the child.
2007-03-14 13:58:36 +00:00
Dana Jansens
e2521f5c64 a) fix resizerelative moving windows when they reach their minimum size do this by...
b) adding a function to let you see what size/position a window will be given when you actually try move/resize it to some given values. (client_try_configure)
2007-03-14 03:45:56 +00:00
Dana Jansens
594648729f less wasted updates of wm_state 2007-03-14 02:07:30 +00:00
Mikael Magnusson
53109b7592 comparing strings to random locations in memory is probably not what we wanted to do 2007-03-13 12:34:58 +00:00
Dana Jansens
a9910e520b always unfocus the window when it disappears, no special cases.. (except unmanage) 2007-03-13 04:15:25 +00:00
Dana Jansens
270a5b25df set IconicState on windows that are not visible always. this means windows on other desktops too.
as well, this turned out to be a nice cleanup of the wmstate code.

regards to the random dude in #openbox complaining about the ICCCM to make me think to look this up and see if openbox was compliant.
2007-03-13 04:04:13 +00:00
Dana Jansens
7f58bd9eaa save and restore pre-maximized/fullscreen sizes properly
much cleanup on how per-app settings are applied to new mapping windows. maybe i broke it? but it'll be much quicker now, and it's consistant with the rest of the code, so hooray for that. pls let me know if i broke any of it :( hee..
2007-03-13 02:29:08 +00:00
Dana Jansens
d47c6a0979 fallback is still getting x errors. instead, fallback when the client iconifies, and don't fallback when nothing has focus, send it to where we can control things though. 2007-03-12 17:31:11 +00:00
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
6b7cc88c9d validate clients before trying to focus them in fallback
also validate before trying to set the focus on a window

this should fix those crashes, and should just be better over all
2007-03-12 05:57:30 +00:00
Dana Jansens
c018e21220 i rewrote handling of focus events. this is pretty much based on blackbox's current form, as well as reading the xlib programming manual at:
http://tronche.com/gui/x/xlib/events/input-focus/normal-and-grabbed.html

this may break for people. that'd be nice to hear about, so it can be fixed. but hopefully this is more robust. it sure is a lot more simple.
2007-03-12 05:25:34 +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
e2b3a32aed We were grabbing SubstructureNotifyMask on the root window. I don't know why.. It meant that we got unmap notifies for windows we weren't even managing and stuff. It ended up breaking VLC when it mapped-unmapped-mapped a window. We grab StructureNotify for all the clients, so I am not sure why this was ever there. 2007-03-11 22:16:42 +00:00
Dana Jansens
cbfa27759d extra braces.. why does the world hate me so? 2007-03-11 19:27:44 +00:00
Dana Jansens
d9601bc196 .. i am pretending to be mika :D :D ok this time for real 2007-03-11 19:27:16 +00:00
Dana Jansens
d98a6183a3 oh.. wasted verbosity.. *strums guitar* 2007-03-11 19:26:28 +00:00
Dana Jansens
e714fa7351 rewrite the focus steal prevention code to clean it up hopefully a bit. also don't steal focus from globally active focus model clients 2007-03-11 19:25:57 +00:00
Dana Jansens
6714a0e2ca Honor transient_for=Root, even thought this is crap and breaks some KDE stuff. Also include a big comment as to why this is suck. 2007-03-11 19:15:28 +00:00
Dana Jansens
7229bea3c6 client_configure_full is trying to move a window, it shouldn't determine the window's monitor from its current position, but from the new position instead. move client_monitor()'s logic into screen, more generically, and let client_configure_full use that 2007-03-11 17:34:07 +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
bd19fd06db remove the kde icon hint, they use the EWMH icon now 2007-03-11 00:59:13 +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
ec67e96583 make startup notification a little more robust. obconf is just broken, between
the application and it's .desktop.
2007-03-10 22:52:50 +00:00
Dana Jansens
49dd40d99f no longer honor transient_for = None or Root. it violates the ICCCM and is causing problems. there are proper ways to make group transient windows with the EWMH. 2007-03-10 20:52:04 +00:00
Dana Jansens
4fa19b5985 more cleverness for window placing.
make sure its 10% on the screen in some direction always..

but if the application is placing itself, make sure its on the screen entirely,
and also put it entirely on one monitor if you have xinerama.

if it's bigger than the monitor's space though, it won't do anything with it..
2007-03-10 01:08:19 +00:00
Dana Jansens
ae246097a5 let you put windows with the titlebar off screen.. for mikachu.
but also don't let applications put themselves under the struts!
2007-03-10 00:44:43 +00:00
Dana Jansens
86b809df8a oops... I'm combining two different things in this commit... so I'll try be clear
1. when another wm requests to replace openbox, openbox exits. but the SM will just restart openbox unless we tell it not to. so now ob_exit_replace() will change the session manager's view of openbox to not restart it. that way the new WM will be able to run.

2. allow windows to move themselves off of the screen 90% of the way, if they really want to. but only 90% to the left, right, and bottom of the screen. it won't let the app move off the top of the screen on its own at all now, since hiding the titlebar on you without you being a part of the process is pretty darn evil!

this is really to address bug # 2982 - for the tilda application. but i guess if windows really want to move off the screen, who's to say no? also, every other window manager will let them - except metacity won't let them on the left/top side of the screen.
2007-03-04 09:01:52 +00:00
Dana Jansens
c07095acb7 better string matching for duplicate title numbering. this will check against the whole window's title. it used to check less than the full length sometimes. thanks to logan for patches and ideas! 2007-03-04 07:54:21 +00:00
Dana Jansens
65f0c70851 pretty brackets 2007-03-03 03:53:10 +00:00
Dana Jansens
4084f5d82d fix for per-application focus settings. properly use all the possible values (1, 0, and -1) 2007-03-02 22:44:38 +00:00
Dana Jansens
140c5313cf 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 2007-03-02 15:19:39 +00:00
Dana Jansens
80a6f06c0a support clients which use true transparency 32-bit visuals.
this requires that when a client is using a 32-bit visual, we have to
make the frame windows that sit underneath it to use the same visual (and a
colormap which matches it)
2007-03-02 06:01:16 +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
d3d4aa2987 80 cols 2006-11-15 21:12:06 +00:00
Mikael Magnusson
59d35252dd dont use nonexisting functions 2006-10-31 14:40:32 +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
b9532883a2 dont use the keepBorder option for mwm hinted windows after all, but do honor the mwm_decor_border hint instead 2006-09-12 20:26:00 +00:00
Mikael Magnusson
96eab1423f oops, added borders to windows when keepborder was on and they didnt have one to start with, ie docks etc 2006-08-31 13:43:19 +00:00
Mikael Magnusson
4d50b21835 update copyright step 1 2006-08-22 16:37:35 +00:00
Mikael Magnusson
c234ed9ecd maybe fix transients placed offscreen under certain conditions 2006-08-21 20:39:42 +00:00
Mikael Magnusson
d77c8f62f2 a more proper fix for the client list menu trying to activate a closed client, no difference on end result 2006-08-19 20:34:27 +00:00
Mikael Magnusson
3b56988069 dont flicker when setting desktop by per app settings 2006-08-19 17:55:31 +00:00
Mikael Magnusson
39f6b8ca71 forgot to check if perapp settings said to put window on all desktops 2006-08-19 17:50:12 +00:00
Mikael Magnusson
34269a34e1 lets not change the stacking before we add the window to the stacking stack 2006-08-19 15:35:23 +00:00
Mikael Magnusson
1de9c1901c fix a silly copy paste bug, titlenumber should now be disableable 2006-08-18 21:23:02 +00:00
Mikael Magnusson
83a0303dd7 add option titleNumber in theme section to disable the little [x] that you get after identical window titles 2006-08-16 19:32:13 +00:00
Mikael Magnusson
8eea64ca08 adjust logic to be... logical 2006-08-16 18:11:47 +00:00
Mikael Magnusson
5b288939ab try utf8 for WM_NAME if locale fails, really the _locale functions in prop.c are busted and should be fixed but i have no idea how. 2006-08-16 16:51:00 +00:00
Mikael Magnusson
dce6247e69 really fix focus_last? 2006-08-04 19:56:42 +00:00
Mikael Magnusson
97719044b1 s/_/./ 2006-08-02 17:40:23 +00:00
Mikael Magnusson
6a7c0b893a s/self/settings/ 2006-08-02 17:37:05 +00:00
Mikael Magnusson
05c0dbfedf be paranoid about programs setting 0 resize increments, which results in a divide by zero, which is in turn bad 2006-08-02 16:36:29 +00:00
Mikael Magnusson
d2fb93e8af remove bogus check for handle width in client_setup_decor_and_functions resulting in handles not being drawn if a theme with handle width = 0 is used when that function is called for a window and a theme with handle with > 0 is then loaded. 2006-08-02 06:07:12 +00:00
Mikael Magnusson
9fe211a1ca remove an old comment 2006-08-01 23:59:27 +00:00
Mikael Magnusson
e0aa54a891 rip out the VIDMODE extension stuff. this was only used to size fullscreen windows to the viewport, i doubt anyone is actually using it and it interacts very badly with xinerama. 2006-06-11 09:47:53 +00:00
Mikael Magnusson
0f80c6ab40 not surprisingly, there was a typo 2006-06-09 14:53:36 +00:00
Mikael Magnusson
e72a1232fa if this works i will be a bit amazed, add class matching, and allow to match either name or class or both 2006-06-09 14:52:06 +00:00
Mikael Magnusson
d4b7340454 changing props need client_change_state 2006-06-09 14:29:54 +00:00
Mikael Magnusson
94a0ea2150 fix2 2006-06-09 14:19:59 +00:00
Mikael Magnusson
2658610ae2 fix 2006-06-09 14:17:15 +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
c63938f765 fix 2006-06-08 11:37:51 +00:00
Mikael Magnusson
de1559a094 move stuff around some more 2006-06-08 11:36:43 +00:00
Mikael Magnusson
f80ab241f3 some notes to self 2006-06-08 11:05:29 +00:00
Mikael Magnusson
ed61a94ca5 per app settings 2006-06-08 10:18:31 +00:00
Mikael Magnusson
ad215303e7 fix #2670 (hilight first entry in menus) and respect keepBorder setting when removing borders from mwm hints 2006-04-20 18:36:23 +00:00
Mikael Magnusson
1fad2da07f more 64 bit fixes 2005-10-07 17:00:35 +00:00
Mikael Magnusson
9df57ff1b5 I meant to check for windows placed by programs, not windows not placed by the user. Now checks for windows placed by programs and not placed by user. This excludes placement schemes which the former check didn't, resulting in some brokenness, particularly with xinerama. 2005-09-13 12:13:13 +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
03cad5d97c add a (temporary?) check to client_activate to make client_list_menu not crash openbox when selecting a window that has closed since the menu opened 2005-07-25 14:15:16 +00:00
Mikael Magnusson
6ec1881579 c++ comments 2005-07-14 13:23:05 +00:00
Mikael Magnusson
cab723fac9 fix transparent terminals not updating when toggledecoring them 2005-03-25 23:00:20 +00:00
Mikael Magnusson
e74fbdaa0e revert a commit xor made in 2003 that always annoyed me, now docks (panels) go in the same layers as normal windows again. docks that dont specify layer go in the ABOVE layer and those that specify BELOW get put in the NORMAL layer. 2005-02-06 16:00:24 +00:00
Mikael Magnusson
ac416fd27e testing failed, hopefully this is reverting to the right place 2005-02-06 02:18:06 +00:00
Mikael Magnusson
3f40d6e762 more testing 2005-02-06 02:06:57 +00:00
Mikael Magnusson
52c345c300 try moving the move_onscreen with the rude into the place routine so it only gets called if a window doesn't specify a position 2005-02-06 01:43:37 +00:00
Mikael Magnusson
60565bcba8 okay so that's why it didn't use move_onscreen 2005-02-06 01:16:00 +00:00
Mikael Magnusson
ef042d220b test some stuff 2005-02-06 00:50:43 +00:00
Mikael Magnusson
943dd68152 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. 2005-02-05 23:26:16 +00:00
Mikael Magnusson
4f9ec4cbdb grab the mouse buttons and keyboards keys on clients before showing them to avoid the situation where a grabbed key goes to a client without being seen by openbox, hopefully has no side effects but probably does 2004-12-30 15:37:30 +00:00
Mikael Magnusson
349990a3b5 eek, a patch had a tab in it 2004-10-21 20:54:59 +00:00
Mikael Magnusson
f825b13b85 patch to let wmctrl and others set _NET_WM_STATE_HIDDEN to minimize windows, by Timo Hirvonen 2004-10-08 13:56:39 +00:00
Mikael Magnusson
c02f68499f option to make dragging and findedge ignore windows on lower layers 2004-09-04 19:45:38 +00:00
Mikael Magnusson
8ba619d5f1 finding edges and switching directional focus was broken from omnipresent windows. changed c->desktop to screen_desktop seems to work fine so far. 2004-06-14 12:26:35 +00:00
Mikael Magnusson
cabcea2002 okay, so maybe i should try compiling things. lets see if i can get away with not testing it 2004-03-31 07:40:06 +00:00
Mikael Magnusson
89f223e253 this is not so nice 2004-03-30 22:32:12 +00:00
Mikael Magnusson
a70e22c557 nothing to see here, move along 2004-03-30 22:24:15 +00:00
Mikael Magnusson
f870d32397 two hands raised, keepBorder added to <theme> section 2004-03-21 20:02:47 +00:00
Mikael Magnusson
b2b8ad92bf update copyright notices 2004-03-21 11:57:31 +00:00
Mikael Magnusson
3fadb639fa pasted that a bit too far down yesterday 2004-03-21 11:38:21 +00:00
Mikael Magnusson
335e8acbfc yay no tabs in the source 2004-03-21 01:03:00 +00:00
Mikael Magnusson
e3786e64fb typo fix a comment 2004-03-20 23:52:38 +00:00
Mikael Magnusson
07dd2c6442 fix reversed variable name and add a little comment to the magic menu code 2004-03-20 23:40:29 +00:00
Mikael Magnusson
cd0204d626 fullscreen overrides aspect hints (because i say so) 2004-03-20 21:38:04 +00:00
Mikael Magnusson
77c744f285 raise your hand if you liked the onepixel border and i'll add an option for it somewhere 2004-03-20 21:35:44 +00:00
Mikael Magnusson
2a8ede0004 alert windows can be titleless, maybe all titleless windows should be empty, i dunno 2004-03-20 21:34:29 +00:00
Mikael Magnusson
d50f491716 this might fix focusLast which was previously borken when closing a window and the pointer was on it and then going onto another from the close. er, yeah. 2004-02-25 19:07:40 +00:00
Dana Jansens
a6e4aba806 make all dialog typed windows transient for their group if they dont specify a WM_TRANSIENT_FOR hint. 2003-12-22 17:24:51 +00:00
Dana Jansens
5a1ad84c05 use gpointer for void* 2003-10-25 19:39:19 +00:00
Dana Jansens
16dc1c48c8 oops typo of doom 2003-10-25 19:30:48 +00:00
Dana Jansens
174de91c34 use g_[s]list_next/previous consistantly, and check for "it" instead of "it != NULL" consistantly. props to Logan again :) 2003-10-25 19:27:09 +00:00
Dana Jansens
5cac540f56 add to teh focus order before the call to change_state, since this can remove/add to the focus order, and then we're in there twice 2003-10-18 22:09:29 +00:00
Dana Jansens
5749f109f9 both must be normal to inherit above/below 2003-10-15 16:14:29 +00:00
Dana Jansens
c30df2e750 dont let clients be above and below 2003-10-15 05:50:56 +00:00
Dana Jansens
415f2cce27 only inherit layer when both windows are the same normal status 2003-10-15 04:56:32 +00:00
Dana Jansens
740c5b2a20 consistant glib type usage 2003-10-15 03:59:35 +00:00
Dana Jansens
c9233ddb23 unmap and map the client window when the frame is hidden/shown 2003-10-15 03:01:34 +00:00
Dana Jansens
37c9f2d961 fix _NET_WM_STRUT oldschool support 2003-10-14 07:23:42 +00:00
Dana Jansens
2bf58d8fb3 dont put windows below by default 2003-10-13 03:47:52 +00:00
Dana Jansens
420e6f87a6 inherit above/below more carefully 2003-10-13 02:52:59 +00:00
Dana Jansens
b9b3123305 when getting the state, grab the above/below from the max amongst other members of the client's group 2003-10-13 01:10:03 +00:00
Dana Jansens
cf397b0e60 smarter picking of heads for client windows 2003-10-11 08:24:49 +00:00
Dana Jansens
f5f59cea71 raise windows when they change modality 2003-10-11 08:21:51 +00:00
Dana Jansens
5592351585 give clients being restored from a session a little more flexibility in lpacement so they will go back where they were when saved 2003-10-11 07:35:05 +00:00
Dana Jansens
469b0c1ca9 handle case where session saves a 0 width/height (for maximized windows!) 2003-10-11 03:44:05 +00:00
Dana Jansens
c8678108eb indenting 2003-10-10 08:28:18 +00:00
Dana Jansens
1be38a0418 set the defaults for typed windows in client_get_all:
desktop types get put on all desktops
dock types get put in the ABOVE layer
2003-10-10 08:22:14 +00:00