From 3f55fcf7f46cfd614f6e6c43cd574203b360f3d5 Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Sun, 6 Dec 2009 16:17:39 +0000 Subject: [PATCH] Add ability for policy to handle activate code itself. SVN revision: 44217 --- src/modules/illume2/e_mod_layout.c | 20 +++---------------- src/modules/illume2/e_mod_layout.h | 1 + src/modules/illume2/e_mod_layout_illume.c | 24 ++++++++++++++++++++++- 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/modules/illume2/e_mod_layout.c b/src/modules/illume2/e_mod_layout.c index 665f690c9..021b93de3 100644 --- a/src/modules/illume2/e_mod_layout.c +++ b/src/modules/illume2/e_mod_layout.c @@ -622,22 +622,8 @@ _cb_event_client_message(void *data, int type, void *event) ev = event; if (ev->message_type != ECORE_X_ATOM_NET_ACTIVE_WINDOW) return 1; bd = e_border_find_by_client_window(ev->win); - if ((bd) && (!bd->focused)) - { - if ((e_config->focus_setting == E_FOCUS_NEW_WINDOW) || - ((bd->parent) && - ((e_config->focus_setting == E_FOCUS_NEW_DIALOG) || - ((bd->parent->focused) && - (e_config->focus_setting == E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED))))) - { - if (bd->iconic) - { - if (!bd->lock_user_iconify) e_border_uniconify(bd); - } - if (!bd->lock_user_stacking) e_border_raise(bd); - if (!bd->lock_focus_out) e_border_focus_set(bd, 1, 1); - } - } - + if (bd->stolen) return 1; + if ((mode) && (mode->funcs.border_activate)) + mode->funcs.border_activate(bd); return 1; } diff --git a/src/modules/illume2/e_mod_layout.h b/src/modules/illume2/e_mod_layout.h index 7a8031823..4abd41a4f 100644 --- a/src/modules/illume2/e_mod_layout.h +++ b/src/modules/illume2/e_mod_layout.h @@ -29,6 +29,7 @@ struct _Illume_Layout_Mode void (*zone_layout) (E_Zone *zone); void (*zone_move_resize) (E_Zone *zone); // --- add more below (activate callback, and more) + void (*border_activate) (E_Border *bd); } funcs; }; diff --git a/src/modules/illume2/e_mod_layout_illume.c b/src/modules/illume2/e_mod_layout_illume.c index d32d0ab8d..a0879ece4 100644 --- a/src/modules/illume2/e_mod_layout_illume.c +++ b/src/modules/illume2/e_mod_layout_illume.c @@ -118,6 +118,27 @@ _zone_move_resize(E_Zone *z) _zone_layout(z); } +static void +_border_activate(E_Border *bd) +{ + if ((bd) && (!bd->focused)) + { + if ((e_config->focus_setting == E_FOCUS_NEW_WINDOW) || + ((bd->parent) && + ((e_config->focus_setting == E_FOCUS_NEW_DIALOG) || + ((bd->parent->focused) && + (e_config->focus_setting == E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED))))) + { + if (bd->iconic) + { + if (!bd->lock_user_iconify) e_border_uniconify(bd); + } + if (!bd->lock_user_stacking) e_border_raise(bd); + if (!bd->lock_focus_out) e_border_focus_set(bd, 1, 1); + } + } +} + /* local functions */ static void _border_calc_position(E_Zone *z, E_Border *bd, int *x, int *y, int *w, int *h) @@ -150,7 +171,8 @@ const Illume_Layout_Mode laymode = _border_focus_in, _border_focus_out, _zone_layout, - _zone_move_resize + _zone_move_resize, + _border_activate }; void