WTI_LOG("TRANSIENT_FOR::transient_for_set : %p\n", parent);
E_Input_Panel_Surface *ips;
Eina_List *l;
+ E_Client *ec_parent = parent;
+
+ /* finding the actual parent window that contains the remote surface. */
+ if (ec_parent)
+ {
+ if (!e_object_is_del(E_OBJECT(ec_parent)) &&
+ (ec_parent->comp_data))
+ {
+ ec_parent = ec_parent->comp_data->onscreen_parent;
+ }
+ }
EINA_LIST_FOREACH(g_input_panel->surfaces, l, ips)
{
if (child->parent)
{
WTI_LOG("TRANSIENT_FOR::The child already has a parent : %p\n", child->parent);
- if (parent != child->parent)
+ if (ec_parent != child->parent)
{
child->parent->transients =
eina_list_remove(child->parent->transients, child);
}
/* Append our child into parent's transients list */
- if ((parent != child) && (parent != child->parent))
+ if ((ec_parent != child) && (ec_parent != child->parent))
{
- if ((parent) && (eina_list_data_find(parent->transients, child) != child))
+ if ((ec_parent) && (eina_list_data_find(parent->transients, child) != child))
{
- WTI_LOG("TRANSIENT_FOR::Adding %p into parent %p's transients list\n", child, parent);
- parent->transients = eina_list_append(parent->transients, child);
+ WTI_LOG("TRANSIENT_FOR::Adding %p into parent %p's transients list\n", child, ec_parent);
+ ec_parent->transients = eina_list_append(ec_parent->transients, child);
}
- child->parent = parent;
+ child->parent = ec_parent;
}
- if (parent)
+ if (ec_parent)
{
child->icccm.fetch.transient_for = EINA_TRUE;
- child->icccm.transient_for = e_client_util_win_get(parent);
+ child->icccm.transient_for = e_client_util_win_get(ec_parent);
}
else
{