From a22e9ce9cde93742320c015fc20af46b6f547b1b Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Fri, 7 Oct 2016 23:46:27 +0200 Subject: [PATCH] st: Ignore filtered selection events not meant to our clipboard window Other windows like the mutter Xwayland selection bridges might deal with the clipboard, which would result in events visible on st-clipboard event filters. In order to avoid unintended results, ignore events that are not meant for the clipboard window. https://bugzilla.gnome.org/show_bug.cgi?id=760745 --- src/st/st-clipboard.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/st/st-clipboard.c b/src/st/st-clipboard.c index 556721d7f..d5b1395e4 100644 --- a/src/st/st-clipboard.c +++ b/src/st/st-clipboard.c @@ -117,6 +117,7 @@ st_clipboard_provider (GdkXEvent *xevent_p, GdkDisplay *display = gdk_display_get_default (); if (xev->type != SelectionRequest || + xev->xany.window != clipboard->priv->clipboard_window || !clipboard->priv->clipboard_text) return GDK_FILTER_CONTINUE; @@ -233,13 +234,15 @@ st_clipboard_x11_event_filter (GdkXEvent *xevent_p, { XEvent *xev = (XEvent *) xevent_p; EventFilterData *filter_data = user_data; + StClipboardPrivate *priv = filter_data->clipboard->priv; Atom actual_type; int actual_format, result; unsigned long nitems, bytes_after; unsigned char *data = NULL; GdkDisplay *display = gdk_display_get_default (); - if(xev->type != SelectionNotify) + if(xev->type != SelectionNotify || + xev->xany.window != priv->clipboard_window) return GDK_FILTER_CONTINUE; if (xev->xselection.property == None)