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
This commit is contained in:
parent
d4ce51b1b7
commit
a22e9ce9cd
@ -117,6 +117,7 @@ st_clipboard_provider (GdkXEvent *xevent_p,
|
|||||||
GdkDisplay *display = gdk_display_get_default ();
|
GdkDisplay *display = gdk_display_get_default ();
|
||||||
|
|
||||||
if (xev->type != SelectionRequest ||
|
if (xev->type != SelectionRequest ||
|
||||||
|
xev->xany.window != clipboard->priv->clipboard_window ||
|
||||||
!clipboard->priv->clipboard_text)
|
!clipboard->priv->clipboard_text)
|
||||||
return GDK_FILTER_CONTINUE;
|
return GDK_FILTER_CONTINUE;
|
||||||
|
|
||||||
@ -233,13 +234,15 @@ st_clipboard_x11_event_filter (GdkXEvent *xevent_p,
|
|||||||
{
|
{
|
||||||
XEvent *xev = (XEvent *) xevent_p;
|
XEvent *xev = (XEvent *) xevent_p;
|
||||||
EventFilterData *filter_data = user_data;
|
EventFilterData *filter_data = user_data;
|
||||||
|
StClipboardPrivate *priv = filter_data->clipboard->priv;
|
||||||
Atom actual_type;
|
Atom actual_type;
|
||||||
int actual_format, result;
|
int actual_format, result;
|
||||||
unsigned long nitems, bytes_after;
|
unsigned long nitems, bytes_after;
|
||||||
unsigned char *data = NULL;
|
unsigned char *data = NULL;
|
||||||
GdkDisplay *display = gdk_display_get_default ();
|
GdkDisplay *display = gdk_display_get_default ();
|
||||||
|
|
||||||
if(xev->type != SelectionNotify)
|
if(xev->type != SelectionNotify ||
|
||||||
|
xev->xany.window != priv->clipboard_window)
|
||||||
return GDK_FILTER_CONTINUE;
|
return GDK_FILTER_CONTINUE;
|
||||||
|
|
||||||
if (xev->xselection.property == None)
|
if (xev->xselection.property == None)
|
||||||
|
Loading…
Reference in New Issue
Block a user