e_service_kvm: send source mimetype to kvm service 82/305182/1
authorJunseok Kim <juns.kim@samsung.com>
Fri, 26 Jan 2024 06:24:55 +0000 (15:24 +0900)
committerJunseok Kim <juns.kim@samsung.com>
Mon, 29 Jan 2024 12:23:09 +0000 (21:23 +0900)
Change-Id: If76fad160d784b0263713d85ed6cb5ab414a5ad6

src/bin/services/e_service_kvm.c
src/bin/services/e_service_kvm.h

index 35267f89f0befe695ff73f08209c5f14df83ec7e..7bbb89d9204115fd514e55a9dc1bd448cfdb9c9f 100644 (file)
@@ -85,6 +85,7 @@ _kvm_hook_drag_start(void *d EINA_UNUSED, E_Drag *drag)
             e_comp_ungrab_input(1, 1);
          }
 
+         e_service_kvm_send_source_mimetypes(esk);
          e_service_kvm_send_drag_start(esk);
      }
    eina_iterator_free(it);
@@ -318,6 +319,31 @@ e_service_kvm_perform_drag_leave(E_Client *ec)
    return EINA_TRUE;
 }
 
+EINTERN Eina_Bool
+e_service_kvm_send_source_mimetypes(E_Service_Kvm *esk)
+{
+   E_Comp_Wl_Data_Source *source;
+   Eina_Iterator *it;
+   char *mimetype;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(esk, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(esk->ec, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(esk->srv_kvm_res, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp_wl->drag_source, EINA_FALSE);
+
+   ELOGF("KVM", "Source mimes send!", esk->ec);
+
+   source = (E_Comp_Wl_Data_Source *) e_comp_wl->drag_source;
+
+   tws_service_kvm_send_source_mimes(esk->srv_kvm_res, NULL);
+   it = eina_array_iterator_new(source->mime_types);
+   EINA_ITERATOR_FOREACH(it, mimetype)
+     tws_service_kvm_send_source_mimes(esk->srv_kvm_res, mimetype);
+   eina_iterator_free(it);
+
+   return EINA_TRUE;
+}
+
 EINTERN Eina_Bool
 e_service_kvm_secondary_selection_set(E_Client *ec, Eina_Bool set)
 {
index 7fcaf1bf6f3448171e26ec69aa50daf4db7a9db7..5907d5aef35a8495442561e48af332b474651615 100644 (file)
@@ -19,6 +19,7 @@ EINTERN Eina_Bool      e_service_kvm_drop_perform(E_Client *ec);
 EINTERN Eina_Bool      e_service_kvm_drag_cancel(E_Client *ec);
 EINTERN Eina_Bool      e_service_kvm_perform_drag_enter(E_Client *ec);
 EINTERN Eina_Bool      e_service_kvm_perform_drag_leave(E_Client *ec);
+EINTERN Eina_Bool      e_service_kvm_send_source_mimetypes(E_Service_Kvm *esk);
 EINTERN Eina_Bool      e_service_kvm_secondary_selection_set(E_Client *ec, Eina_Bool set);
 EINTERN Eina_Bool      e_service_kvm_transparent_set(E_Client *ec, Eina_Bool set);
 EINTERN Eina_Bool      e_service_kvm_all_kvm_service_transparent_set(Eina_Bool set);