E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
//printf("e_border_focus_set(%p, %i %i);\n", bd, focus, set);
+ if (bd->modal)
+ {
+ e_border_focus_set(bd->modal, focus, set);
+ return;
+ }
if ((bd->visible) && (bd->changes.visible))
{
if ((bd->want_focus) && (set) && (!focus))
}
if (bd->parent)
- bd->parent->children = evas_list_remove(bd->parent->children, bd);
+ {
+ bd->parent->children = evas_list_remove(bd->parent->children, bd);
+ if (bd->parent->modal == bd)
+ {
+ bd->parent->modal = NULL;
+ if (bd->focused)
+ e_border_focus_set(bd->parent, 1, 1);
+ }
+ }
while (bd->children)
{
E_Border *child;
{
bd_parent->children = evas_list_append(bd_parent->children, bd);
bd->parent = bd_parent;
+ if (bd->client.netwm.state.modal)
+ bd->parent->modal = bd;
}
}
// printf("##- NEW CLIENT SETUP 0x%x\n", bd->client.win);