X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=openbox%2Ffocus.c;h=949a3291721be33c9aaed16b6dfb28aede962ba4;hb=32390c6b6dceeb72e4e4ceb0e79ba4d8c8ede9a3;hp=4fa123cbaf594ffb13493281ac92536632024669;hpb=380ddd2b9cd2ffd8d286855b0670e58a553b2b3d;p=chaz%2Fopenbox diff --git a/openbox/focus.c b/openbox/focus.c index 4fa123cb..949a3291 100644 --- a/openbox/focus.c +++ b/openbox/focus.c @@ -1,5 +1,6 @@ #include "event.h" #include "openbox.h" +#include "grab.h" #include "framerender.h" #include "client.h" #include "config.h" @@ -40,8 +41,7 @@ void focus_startup() -100, -100, 1, 1, 0, CopyFromParent, InputOutput, CopyFromParent, CWOverrideRedirect, &attrib); - XMapWindow(ob_display, focus_backup); - stacking_raise_internal(focus_backup); + XMapRaised(ob_display, focus_backup); /* start with nothing focused */ focus_set_client(NULL); @@ -268,16 +268,13 @@ Client *focus_cycle(gboolean forward, gboolean linear, gboolean done, frame_adjust_focus(focus_client->frame, TRUE); goto done_cycle; } else if (done) { - if (focus_cycle_target) { - if (focus_cycle_target->iconic) - client_iconify(focus_cycle_target, FALSE, FALSE); - if (focus_cycle_target->shaded) - client_shade(focus_cycle_target, FALSE); - client_focus(focus_cycle_target); - stacking_raise(focus_cycle_target); - } + if (focus_cycle_target) + client_activate(focus_cycle_target); goto done_cycle; } + if (!first) + grab_pointer(TRUE, None); + if (!first) first = focus_client; if (!focus_cycle_target) focus_cycle_target = focus_client; @@ -319,7 +316,10 @@ done_cycle: focus_cycle_target = NULL; g_list_free(order); order = NULL; + popup_cycle(ft, FALSE); + grab_pointer(FALSE, None); + return NULL; }