From: Enlightenment S. <no-...@en...> - 2010-01-19 02:21:21
|
Log: Recode 'back' message to work on focus per-zone. Author: devilhorns Date: 2010-01-18 18:21:14 -0800 (Mon, 18 Jan 2010) New Revision: 45312 Modified: trunk/e/src/modules/illume2/e_mod_layout.c trunk/e/src/modules/illume2/policies/illume/layout.c Modified: trunk/e/src/modules/illume2/e_mod_layout.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout.c 2010-01-19 02:17:14 UTC (rev 45311) +++ trunk/e/src/modules/illume2/e_mod_layout.c 2010-01-19 02:21:14 UTC (rev 45312) @@ -483,23 +483,25 @@ } 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; Modified: trunk/e/src/modules/illume2/policies/illume/layout.c =================================================================== --- trunk/e/src/modules/illume2/policies/illume/layout.c 2010-01-19 02:17:14 UTC (rev 45311) +++ trunk/e/src/modules/illume2/policies/illume/layout.c 2010-01-19 02:21:14 UTC (rev 45312) @@ -58,6 +58,7 @@ _layout_border_focus_in(E_Border *bd) { /* Do something if focus enters a window */ + e_border_focus_latest_set(bd); } void |