[PATCH virt-viewer] Fullscreen displays on wrong monitors in Wayland

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

 



In fullscreen mode, we attempt to enable a guest display for each client
monitor and then place a fullscreen window for each display on the
appropriate monitor. Previously, we were using gtk_window_move() to move
the window to the proper monitor, and then calling
gtk_window_fullscreen() to enter fullscreen mode on that monitor.
However, under wayland, gtk_window_move() no longer has any effect for
toplevel windows, so all displays were showing up on top of eachother on
the same client monitor.

Fortunately, Gtk+ 3.18 added a new gtk_window_fullscreen_on_monitor()
API that works on Wayland. In theory this allows us to remove the call
to gtk_window_move() from the code. But to avoid potentially changing
behavior on xorg or older systems, I left the existing logic.

This requires a dependency bump for gtk+ from 3.12 to 3.18. Gtk 3.18 is
provided by the following distributions (or newer):
 - RHEL 7.4
 - Fedora 23
 - Ubuntu 16.04LTS

Resolves: rhbz#1584561
---
 configure.ac             | 4 ++--
 src/virt-viewer-window.c | 8 +++++++-
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/configure.ac b/configure.ac
index 9b52eb4..e349e62 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,8 +17,8 @@ GLIB2_REQUIRED="2.38"
 GLIB2_ENCODED_VERSION="GLIB_VERSION_2_38"
 
 # Keep these two definitions in agreement.
-GTK_REQUIRED="3.12"
-GTK_ENCODED_VERSION="GDK_VERSION_3_12"
+GTK_REQUIRED="3.18"
+GTK_ENCODED_VERSION="GDK_VERSION_3_18"
 
 LIBXML2_REQUIRED="2.6.0"
 LIBVIRT_REQUIRED="0.10.0"
diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c
index 241b627..aace0f8 100644
--- a/src/virt-viewer-window.c
+++ b/src/virt-viewer-window.c
@@ -525,7 +525,13 @@ virt_viewer_window_enter_fullscreen(VirtViewerWindow *self, gint monitor)
     }
     virt_viewer_window_move_to_monitor(self);
 
-    gtk_window_fullscreen(GTK_WINDOW(priv->window));
+    if (monitor == -1) {
+        // just go fullscreen on the current monitor
+        gtk_window_fullscreen(GTK_WINDOW(priv->window));
+    } else {
+        gtk_window_fullscreen_on_monitor(GTK_WINDOW(priv->window),
+                                         gdk_screen_get_default(), monitor);
+    }
 }
 
 #define MAX_KEY_COMBO 4
-- 
2.14.4

_______________________________________________
virt-tools-list mailing list
virt-tools-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/virt-tools-list



[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux