diff --git a/src/modules/illume2/e_mod_layout.c b/src/modules/illume2/e_mod_layout.c index 21bcee2a6..0028daa3e 100644 --- a/src/modules/illume2/e_mod_layout.c +++ b/src/modules/illume2/e_mod_layout.c @@ -483,23 +483,25 @@ _e_mod_layout_cb_client_message(void *data, int type, void *event) } else if (ev->message_type == ECORE_X_ATOM_E_ILLUME_BACK) { - E_Border *bd, *fbd; + E_Zone *zone; Eina_List *focused, *l; + E_Border *fbd; - if (!(bd = e_border_focused_get())) return 1; + zone = e_util_zone_window_find(ev->win); focused = e_border_focus_stack_get(); EINA_LIST_REVERSE_FOREACH(focused, l, fbd) { - E_Border *fb; - - if (fbd->zone != bd->zone) continue; + if (fbd->zone != zone) continue; if (e_object_is_del(E_OBJECT(fbd))) continue; if ((!fbd->client.icccm.accepts_focus) && (!fbd->client.icccm.take_focus)) continue; if (fbd->client.netwm.state.skip_taskbar) continue; - if (fbd == bd) + if (fbd == e_border_focused_get()) { + E_Border *fb; + if (!(fb = focused->next->data)) continue; + if (fb->zone != zone) continue; if (e_object_is_del(E_OBJECT(fb))) continue; if ((!fb->client.icccm.accepts_focus) && (!fb->client.icccm.take_focus)) continue; diff --git a/src/modules/illume2/policies/illume/layout.c b/src/modules/illume2/policies/illume/layout.c index a6b37c71d..257a41d92 100644 --- a/src/modules/illume2/policies/illume/layout.c +++ b/src/modules/illume2/policies/illume/layout.c @@ -58,6 +58,7 @@ void _layout_border_focus_in(E_Border *bd) { /* Do something if focus enters a window */ + e_border_focus_latest_set(bd); } void