add support for tizen-remote-surface. 43/99143/3
authorGwanglim Lee <gl77.lee@samsung.com>
Tue, 22 Nov 2016 04:51:06 +0000 (13:51 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Thu, 24 Nov 2016 06:04:27 +0000 (22:04 -0800)
When a client using the tizen-remote-surface requests to activate the input
panel window, it needs to be bound with the actual parent window that
contains the tizen-remote-surface.

Change-Id: I83a3a6e1edc76cf2f0b9ade35c1bc897377ab501

src/e_mod_input_panel.c

index 3532e28..f7425e7 100644 (file)
@@ -736,6 +736,17 @@ e_input_panel_transient_for_set(E_Client *parent)
    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)
      {
@@ -748,7 +759,7 @@ e_input_panel_transient_for_set(E_Client *parent)
         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);
@@ -759,20 +770,20 @@ e_input_panel_transient_for_set(E_Client *parent)
           }
 
         /* 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
           {