X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=plugins%2Ffocus.c;h=5a52d2e98273155b1e69cae45ebae31f63b14580;hb=a3012eafbdb8468a8e61e685a47587da0a48868e;hp=a00a0e9357f31b74f2ea0e75420a6eb5d71a13f5;hpb=4f427471b862f2f547981878b1d088ac52929936;p=chaz%2Fopenbox diff --git a/plugins/focus.c b/plugins/focus.c index a00a0e93..5a52d2e9 100644 --- a/plugins/focus.c +++ b/plugins/focus.c @@ -8,10 +8,10 @@ /* config options */ static gboolean follow_mouse = TRUE; -static gboolean warp_on_desk_switch = TRUE; +static gboolean warp_on_desk_switch = FALSE; static gboolean focus_new = FALSE; -static int skip_enter = 0; +/*static int skip_enter = 0;*/ static gboolean focus_under_pointer() { @@ -42,7 +42,7 @@ static void focus_fallback(gboolean switching_desks) for (it = focus_order[screen_desktop]; it != NULL; it = it->next) if (client_normal(it->data) && client_focus(it->data)) { - if (switching_desks && warp_on_desk_switch) { + if (switching_desks) { XEvent e; Client *c = it->data; @@ -61,12 +61,14 @@ static void focus_fallback(gboolean switching_desks) ++skip_enter; }*/ - /* I have to do this warp twice! Otherwise windows dont get - Enter/Leave events when i warp on a desktop switch! */ - XWarpPointer(ob_display, None, c->window, 0, 0, 0, 0, - c->area.width / 2, c->area.height / 2); - XWarpPointer(ob_display, None, c->window, 0, 0, 0, 0, - c->area.width / 2, c->area.height / 2); + if (warp_on_desk_switch) { + /* I have to do this warp twice! Otherwise windows dont get + Enter/Leave events when i warp on a desktop switch! */ + XWarpPointer(ob_display, None, c->window, 0, 0, 0, 0, + c->area.width / 2, c->area.height / 2); + XWarpPointer(ob_display, None, c->window, 0, 0, 0, 0, + c->area.width / 2, c->area.height / 2); + } } break; } @@ -83,7 +85,7 @@ static void events(ObEvent *e, void *foo) case Event_Client_Unmapped: if (ob_state == State_Exiting) break; - if (e->data.c.client->focused) + if (client_focused(e->data.c.client)) if (!follow_mouse || !focus_under_pointer()) focus_fallback(FALSE); break; @@ -100,17 +102,16 @@ static void events(ObEvent *e, void *foo) break; case Event_X_EnterNotify: - if (skip_enter) { +/* if (skip_enter) { if (e->data.x.client != NULL) g_message("skipped enter %lx", e->data.x.client->window); else g_message("skipped enter 'root'"); --skip_enter; } - else if (e->data.x.client != NULL && client_normal(e->data.x.client)) { - g_message("enter %lx", e->data.x.client->window); + else*/ + if (e->data.x.client != NULL && client_normal(e->data.x.client)) client_focus(e->data.x.client); - } break; default: