Dana Jansens [Wed, 16 Jan 2008 23:44:22 +0000 (18:44 -0500)]
use hash tables in ping.[ch] instead of a list. we're pinging every window, not just windows youre trying to close, so don't use datastructures that suck with lots of windows..
Mikael Magnusson [Wed, 16 Jan 2008 14:25:08 +0000 (15:25 +0100)]
Various fixes for sparse warnings.
Define void functions with (void), not ().
Add missing includes.
Some functions were declared static but defined non-static.
Some variables that should be file static were file global but not used in any other file.
prop.h defined a new prop_atoms in each file that included it instead of declaring it extern.
Dana Jansens [Wed, 16 Jan 2008 03:34:04 +0000 (22:34 -0500)]
ping all the windows every 3 seconds, and show "not responding" if they stop replying for 3 times (9-12 seconds). show [Killing...] in the titlebar when trying to kill an app off
Dana Jansens [Wed, 16 Jan 2008 03:13:16 +0000 (22:13 -0500)]
when you close an app and it stops responding.. if you hit close again, it will try kill -TERM. if that fails and you close again, it will kill -9 ! (assuming the app is running on the local host and provided its PID)
Dana Jansens [Wed, 16 Jan 2008 00:36:36 +0000 (19:36 -0500)]
remove the visible window title hints when unmanaging a window. not all WMs set those and it messes them up, and we'll set them again appropriately, they don't need to be saved.
Dana Jansens [Sun, 13 Jan 2008 08:40:14 +0000 (03:40 -0500)]
don't skip windows that are skip_taskbar unless they are normal typed.. i.e. if a dialog sets this don't skip it (gnome shutdown/logout dialogs don't get focused otherwise in arch linux)
Dana Jansens [Sun, 13 Jan 2008 07:50:34 +0000 (02:50 -0500)]
sync when killing all keyboard grabs, so that we can be sure they are gone before proceeding (fixes a race condition when running things that want to grab the keyboard very quickly. yes, arch is that fast somehow..)
Dana Jansens [Sat, 12 Jan 2008 04:16:06 +0000 (23:16 -0500)]
since the internal windows are in window_map now, it's possible we'll get them back when we check what window an event happened on. so don't abort if that happens anymore.
Dana Jansens [Fri, 11 Jan 2008 23:57:32 +0000 (18:57 -0500)]
don't take KeyRelease events for menus until they receive a KeyPress event first. avoid using the key binding used to show the menu to execute something inside it.
Don't record desktops for lastdesktop when switching away quickly again.
When switching desktops, only record the previous desktop as the last
desktop if the user stayed there for a while. This way you can scroll
over a couple desktops quickly, then go back to the previous desktop
you _used_, not the last you scrolled past.
Dana Jansens [Fri, 11 Jan 2008 19:40:58 +0000 (14:40 -0500)]
fix a focus race condition in two ways:
1. when focusing a window, ignore any enter events up until the serial of the X event causing the focus, not up until the last thing sent to the server. if we get 2 enters very quickly, then we don't want to ignore the second one just because we are focusing the first window.
2. there is a race if you check (focus_client != d->client) in the delay_focus_func, because the current focused window might change by the time this focus_client would take effect, so don't check that.
Dana Jansens [Fri, 11 Jan 2008 18:05:11 +0000 (13:05 -0500)]
XKB modifiers are strange things, and i don't know how to read them properly in modkeys.c and convert it all to the x core stuff. so we use this to get the state of the modifiers, otherwise we end up missing them sometimes (like on PPC)
Mikael Magnusson [Wed, 31 Oct 2007 07:10:51 +0000 (08:10 +0100)]
Try to fix the popup only showing up on monitor 0.
screen_find_monitor() should perhaps contain that big hunk of logic, I don't know if
anything will break now that it returns screen_num_monitors sometimes. We'll see!
Dana Jansens [Sat, 4 Aug 2007 17:29:13 +0000 (13:29 -0400)]
don't make omnipresent windows lose focus when changing desktops. this is done by allowing focus_fallback to specify if focus has been lost or not. usually if you're call it, focus is lost, but not always.