Add ability for policy to handle activate code itself.

SVN revision: 44217
This commit is contained in:
Christopher Michael 2009-12-06 16:17:39 +00:00
parent ca0ebba0e4
commit 3f55fcf7f4
3 changed files with 27 additions and 18 deletions

View File

@ -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;
}

View File

@ -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;
};

View File

@ -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