efl-wl: use correct window when requesting x11 clipboard selection
authorMike Blumenkrantz <zmike@osg.samsung.com>
Fri, 28 Jul 2017 19:44:43 +0000 (15:44 -0400)
committerMike Blumenkrantz <zmike@osg.samsung.com>
Fri, 28 Jul 2017 19:40:47 +0000 (15:40 -0400)
src/lib/efl_wl/x11.x

index cc56799..bebd017 100644 (file)
@@ -145,8 +145,25 @@ x11_fixes_selection_notify(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_X_Event
             }
         if (ev->owner)
           {
-             xconvertselection(ecore_x_display_get(), ECORE_X_ATOM_SELECTION_CLIPBOARD,
-               ECORE_X_ATOM_SELECTION_TARGETS, comp_dnd_atom, ev->win, 0);
+             EINA_LIST_FOREACH(comps, l, c)
+               {
+                  win = ecore_evas_window_get(ecore_evas_ecore_evas_get(c->evas));
+                  if (l != comps)
+                    {
+                       Eina_List *ll;
+                       Comp *c2;
+                       Ecore_X_Window win2 = 0;
+                       EINA_LIST_FOREACH(comps, ll, c2)
+                         {
+                            win2 = ecore_evas_window_get(ecore_evas_ecore_evas_get(c->evas));
+                            if (win == win2) break;
+                            if (l == ll) break;
+                         }
+                       if ((win == win2) && (l != ll)) continue;
+                    }
+                  xconvertselection(ecore_x_display_get(), ECORE_X_ATOM_SELECTION_CLIPBOARD,
+                    ECORE_X_ATOM_SELECTION_TARGETS, comp_dnd_atom, win, 0);
+               }
           }
      }
    return ECORE_CALLBACK_RENEW;