struct wl_resource *cbhm;
struct wl_resource *secondary;
+ Eina_List *secondary_list;
Eina_List *data_only_list;
Eina_Bool secondary_selection_sent;
} selection;
offer->preferred_dnd_action = WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY;
_e_comp_wl_data_offer_update_action(offer);
}
+
+static Eina_Bool
+_e_comp_wl_data_secondary_list_check(E_Client *ec)
+{
+ E_Client *tmp;
+ Eina_List *l;
+
+ if (e_comp_wl->selection.secondary_list == NULL)
+ return EINA_FALSE;
+
+ EINA_LIST_FOREACH(e_comp_wl->selection.secondary_list, l, tmp)
+ {
+ if (tmp == ec)
+ return EINA_TRUE;
+ }
+
+ return EINA_FALSE;
+}
+
+EINTERN void
+e_comp_wl_data_secondary_add(E_Client *ec)
+{
+ EINA_SAFETY_ON_NULL_RETURN(ec);
+
+ if (_e_comp_wl_data_secondary_list_check(ec) == EINA_TRUE)
+ return;
+
+ e_comp_wl->selection.secondary_list = eina_list_append(e_comp_wl->selection.secondary_list, ec);
+ DBG("add secondary %s(%p). listcount(%d)",
+ e_client_util_name_get(ec), ec, eina_list_count(e_comp_wl->selection.secondary_list));
+}
+
+EINTERN void
+e_comp_wl_data_secondary_remove(E_Client *ec)
+{
+ EINA_SAFETY_ON_NULL_RETURN(ec);
+
+ if (_e_comp_wl_data_secondary_list_check(ec) == EINA_FALSE)
+ return;
+
+ e_comp_wl->selection.secondary_list = eina_list_remove(e_comp_wl->selection.secondary_list, ec);
+ DBG("remove secondary %s(%p). listcount(%d)",
+ e_client_util_name_get(ec), ec, eina_list_count(e_comp_wl->selection.secondary_list));
+
+
+ if (eina_list_count(e_comp_wl->selection.secondary_list) == 0)
+ {
+ eina_list_free(e_comp_wl->selection.secondary_list);
+ e_comp_wl->selection.secondary_list = NULL;
+ }
+}
EINTERN void e_comp_wl_data_current_device_id_set(int id);
EINTERN int e_comp_wl_data_current_device_id_get(void);
EINTERN void e_comp_wl_data_offer_mimetype_action_accept(E_Comp_Wl_Data_Offer *offer);
-
+EINTERN void e_comp_wl_data_secondary_add(E_Client *ec);
+EINTERN void e_comp_wl_data_secondary_remove(E_Client *ec);
# endif
#endif