[spice-gtk] gtk-session: do not request guest's clipboard data unnecessarily

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

 



From: Victor Toso <me@xxxxxxxxxxxxxx>

If SpiceGtkSession is holding the keyboard, that's huge indication
that we should not be requesting clipboard data yet. The proper time
to request it is when another application in the client machine is
asking for it, which means the user would switch to another
application to paste the guest's clipboard data.

This is default behavior over wayland.

Related: https://gitlab.freedesktop.org/spice/win32/vd_agent/issues/6
Related: https://gitlab.freedesktop.org/spice/linux/vd_agent/issues/9
Related: https://bugzilla.redhat.com/show_bug.cgi?id=1594876

Signed-off-by: Victor Toso <victortoso@xxxxxxxxxx>
Tested-by: James Harvey @jamespharvey20
---
 src/spice-gtk-session.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/spice-gtk-session.c b/src/spice-gtk-session.c
index 1ccae07..0d3438c 100644
--- a/src/spice-gtk-session.c
+++ b/src/spice-gtk-session.c
@@ -645,9 +645,11 @@ static void clipboard_owner_change(GtkClipboard        *clipboard,
         if (gtk_clipboard_get_owner(clipboard) == G_OBJECT(self))
             break;
 
+
         s->clipboard_by_guest[selection] = FALSE;
         s->clip_hasdata[selection] = TRUE;
-        if (s->auto_clipboard_enable && !read_only(self))
+        if (s->auto_clipboard_enable && !read_only(self) &&
+            !spice_gtk_session_get_keyboard_has_focus(self))
             gtk_clipboard_request_targets(clipboard, clipboard_get_targets,
                                           get_weak_ref(self));
         break;
-- 
2.19.2

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux Virtualization]     [Linux Virtualization]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]