X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Ffocus.c;h=d9ed80bcbbfdbcb267fc344b0959658aff63f100;hb=2fc662aa62bc12de38b49bb9e687092318873002;hp=eaaba4ab6c521cda3d432c73477736fe6abd9bb0;hpb=152c638ef10ba2aa062f46ff8b05eb7cbaad66ea;p=chaz%2Fopenbox diff --git a/openbox/focus.c b/openbox/focus.c index eaaba4ab..d9ed80bc 100644 --- a/openbox/focus.c +++ b/openbox/focus.c @@ -1,8 +1,10 @@ +#include "event.h" #include "openbox.h" #include "client.h" #include "screen.h" #include "prop.h" #include "dispatch.h" +#include "focus.h" #include #include @@ -13,8 +15,6 @@ GList **focus_order = NULL; /* these lists are created when screen_startup Window focus_backup = None; -void focus_set_client(Client *client); - void focus_startup() { /* create the window which gets focus when no clients get it. Have to @@ -22,6 +22,8 @@ void focus_startup() mapped. */ XSetWindowAttributes attrib; + focus_client = NULL; + attrib.override_redirect = TRUE; focus_backup = XCreateWindow(ob_display, ob_root, -100, -100, 1, 1, 0, 0, InputOnly, @@ -39,11 +41,12 @@ void focus_shutdown() for (i = 0; i < screen_num_desktops; ++i) g_list_free(focus_order[i]); g_free(focus_order); + focus_order = NULL; - XDestroyWindow(focus_backup); + XDestroyWindow(ob_display, focus_backup); /* reset focus to root */ - XSetInputFocus(ob_display, PointerRoot, RevertToNone, CurrentTime); + XSetInputFocus(ob_display, PointerRoot, RevertToNone, event_lasttime); } void focus_set_client(Client *client) @@ -59,7 +62,8 @@ void focus_set_client(Client *client) if (client == NULL) { /* when nothing will be focused, send focus to the backup target */ - XSetInputFocus(ob_display, focus_backup, RevertToNone, CurrentTime); + XSetInputFocus(ob_display, focus_backup, RevertToNone, + event_unfocustime); } old = focus_client;