[mutter/wip/carlosg/xfixes-subtype] x11: Look up reason for selection clear events from XFixes



commit 37eb0ce73f0134586d618bdef7cd9bb88033edd1
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Jul 3 13:47:38 2020 +0200

    x11: Look up reason for selection clear events from XFixes
    
    If the event originates from a XSetSelectionOwner request, the event
    will contain a XFixesSetSelectionOwnerNotify subtype. The other
    subtypes (meant for the selection window being destroyed, and the
    client closing) are the situations where we mean to replace the
    selection.
    
    Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1268

 src/x11/meta-x11-selection.c | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)
---
diff --git a/src/x11/meta-x11-selection.c b/src/x11/meta-x11-selection.c
index e55a1995d5..8f068dedc9 100644
--- a/src/x11/meta-x11-selection.c
+++ b/src/x11/meta-x11-selection.c
@@ -32,13 +32,6 @@
 #define UTF8_STRING_MIMETYPE "text/plain;charset=utf-8"
 #define STRING_MIMETYPE "text/plain"
 
-/* Set an arbitrary (although generous) threshold to determine whether a
- * XFixesSelectionNotify corresponds to a XSetSelectionOwner from another
- * client. The selection timestamp is not updated if the owner client is
- * closed.
- */
-#define SELECTION_CLEARED_BY_CLIENT(e) (e->timestamp - e->selection_timestamp < 50)
-
 static gboolean
 atom_to_selection_type (Display           *xdisplay,
                         Atom               selection,
@@ -342,7 +335,7 @@ meta_x11_selection_handle_xfixes_selection_notify (MetaX11Display *x11_display,
 
   if (event->owner == None && x11_display->selection.owners[selection_type])
     {
-      if (SELECTION_CLEARED_BY_CLIENT (event))
+      if (event->subtype == XFixesSetSelectionOwnerNotify)
         {
           MetaSelectionSource *source;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]