From 37ff7b43f11fcbc6859fe45584e34d72a13bef77 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 12 May 2017 12:08:32 -0400 Subject: [PATCH] ecore-wl2: emit serials in selection-related events these allow apps to match the serial of their selection to the related event in order to avoid mangling selections from other components --- src/lib/ecore_wl2/Ecore_Wl2.h | 2 ++ src/lib/ecore_wl2/ecore_wl2_dnd.c | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h index e7e5913..3c8039b 100644 --- a/src/lib/ecore_wl2/Ecore_Wl2.h +++ b/src/lib/ecore_wl2/Ecore_Wl2.h @@ -134,6 +134,7 @@ struct _Ecore_Wl2_Event_Data_Source_Event { unsigned int win, source; Ecore_Wl2_Drag_Action action; + uint32_t serial; }; typedef struct _Ecore_Wl2_Event_Data_Source_Event Ecore_Wl2_Event_Data_Source_End; @@ -149,6 +150,7 @@ typedef struct _Ecore_Wl2_Event_Data_Source_Send { char *type; int fd; + uint32_t serial; } Ecore_Wl2_Event_Data_Source_Send; typedef struct _Ecore_Wl2_Event_Seat_Name diff --git a/src/lib/ecore_wl2/ecore_wl2_dnd.c b/src/lib/ecore_wl2/ecore_wl2_dnd.c index 8a4f5df..d86f482 100644 --- a/src/lib/ecore_wl2/ecore_wl2_dnd.c +++ b/src/lib/ecore_wl2/ecore_wl2_dnd.c @@ -110,11 +110,12 @@ data_source_send_free(void *data EINA_UNUSED, void *event) if (!ev) return; free(ev->type); + ecore_wl2_display_disconnect(ev->display); free(ev); } static void -data_source_send(void *data, struct wl_data_source *source EINA_UNUSED, const char *mime_type, int32_t fd) +data_source_send(void *data, struct wl_data_source *source, const char *mime_type, int32_t fd) { Ecore_Wl2_Input *input; Ecore_Wl2_Event_Data_Source_Send *ev; @@ -127,6 +128,10 @@ data_source_send(void *data, struct wl_data_source *source EINA_UNUSED, const ch ev->fd = fd; ev->type = strdup(mime_type); + if (source == input->data.selection.source) + ev->serial = input->data.selection.serial; + else + ev->serial = input->data.drag.serial; ecore_event_add(ECORE_WL2_EVENT_DATA_SOURCE_SEND, ev, data_source_send_free, NULL); -- 2.7.4