You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.6 KiB
71 lines
2.6 KiB
3 years ago
|
From c3a3f23968edceaf097f20450c795c762ec36fc0 Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Jakub=20Jank=C5=AF?= <jjanku@redhat.com>
|
||
|
Date: Sun, 20 Dec 2020 12:29:27 +0100
|
||
|
Subject: [PATCH] disable default grab sequence in kiosk mode
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
Hotkeys should be disabled in kiosk mode. However, if no
|
||
|
"release-cursor" hotkey is specified, the default Ctrl+Alt
|
||
|
grab sequence keeps functioning even in kiosk mode.
|
||
|
That's because it's based on the spice/vnc functionality instead
|
||
|
of on the accelerators in virt-viewer.
|
||
|
|
||
|
That's especially problematic with spice, because the grab
|
||
|
sequence releases both the cursor and the keyboard. Thus the user
|
||
|
can escape from kiosk mode by pressing Ctrl+Alt followed by
|
||
|
Alt+Tab, for example.
|
||
|
|
||
|
Related: https://bugzilla.redhat.com/show_bug.cgi?id=1893584
|
||
|
|
||
|
Signed-off-by: Jakub Janků <jjanku@redhat.com>
|
||
|
---
|
||
|
src/virt-viewer-display-spice.c | 6 +++++-
|
||
|
src/virt-viewer-display-vnc.c | 6 +++++-
|
||
|
2 files changed, 10 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/src/virt-viewer-display-spice.c b/src/virt-viewer-display-spice.c
|
||
|
index a82422c..799403c 100644
|
||
|
--- a/src/virt-viewer-display-spice.c
|
||
|
+++ b/src/virt-viewer-display-spice.c
|
||
|
@@ -238,10 +238,14 @@ enable_accel_changed(VirtViewerApp *app,
|
||
|
VirtViewerDisplaySpice *self)
|
||
|
{
|
||
|
GtkAccelKey key = {0, 0, 0};
|
||
|
+ gboolean kiosk;
|
||
|
+
|
||
|
if (virt_viewer_app_get_enable_accel(app))
|
||
|
gtk_accel_map_lookup_entry("<virt-viewer>/view/release-cursor", &key);
|
||
|
|
||
|
- if (key.accel_key || key.accel_mods) {
|
||
|
+ g_object_get(app, "kiosk", &kiosk, NULL);
|
||
|
+
|
||
|
+ if (key.accel_key || key.accel_mods || kiosk) {
|
||
|
SpiceGrabSequence *seq = spice_grab_sequence_new(0, NULL);
|
||
|
/* disable default grab sequence */
|
||
|
spice_display_set_grab_keys(self->priv->display, seq);
|
||
|
diff --git a/src/virt-viewer-display-vnc.c b/src/virt-viewer-display-vnc.c
|
||
|
index d38dcac..537173c 100644
|
||
|
--- a/src/virt-viewer-display-vnc.c
|
||
|
+++ b/src/virt-viewer-display-vnc.c
|
||
|
@@ -188,10 +188,14 @@ enable_accel_changed(VirtViewerApp *app,
|
||
|
VncDisplay *vnc)
|
||
|
{
|
||
|
GtkAccelKey key = {0, 0, 0};
|
||
|
+ gboolean kiosk;
|
||
|
+
|
||
|
if (virt_viewer_app_get_enable_accel(app))
|
||
|
gtk_accel_map_lookup_entry("<virt-viewer>/view/release-cursor", &key);
|
||
|
|
||
|
- if (key.accel_key || key.accel_mods) {
|
||
|
+ g_object_get(app, "kiosk", &kiosk, NULL);
|
||
|
+
|
||
|
+ if (key.accel_key || key.accel_mods || kiosk) {
|
||
|
VncGrabSequence *seq = vnc_grab_sequence_new(0, NULL);
|
||
|
/* disable default grab sequence */
|
||
|
vnc_display_set_grab_keys(vnc, seq);
|
||
|
--
|
||
|
2.29.2
|
||
|
|