[virt-tools-list] [virt-viewer][PATCH v2] window: Standardize "Leave Fullscreen" behaviour

Fabiano Fidêncio fidencio at redhat.com
Mon Nov 2 05:43:48 UTC 2015


Historically fullscreen mode used to be an app-level option (you could
only have *all* windows fullscreen or *all* windows non-fullscreen). At
some point per-window fullscreen was introduced, but the startup
fullscreen remained with the old (app-level) behaviour.
According to the multimonitor requirements[0], item D5, the --fullscreen
behaviour needs to be changed to match the per-window fullscreen
behaviour, what is done by this patch.

[0]:
https://www.redhat.com/archives/virt-tools-list/2015-June/msg00074.html

Resolves: rhbz#1275248
---
Changes since v1:
- Set both the app and the window to non-fullscreen mode
---
 src/virt-viewer-app.c    | 7 ++++++-
 src/virt-viewer-window.c | 5 +----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c
index 0670358..835fced 100644
--- a/src/virt-viewer-app.c
+++ b/src/virt-viewer-app.c
@@ -2187,7 +2187,12 @@ virt_viewer_app_set_fullscreen(VirtViewerApp *self, gboolean fullscreen)
 
     /* we iterate unconditionnaly, even if it was set before to update new windows */
     priv->fullscreen = fullscreen;
-    g_list_foreach(priv->windows, fullscreen_cb, &options);
+
+    /* For "leaving fullscreen", do not iterate over the windows, keeping the same
+     * behavior as the normal (non-fullscreen) mode. So, developer, take it as
+     * reminder that you must set both the app the window to non-fullscreen mode. */
+    if (fullscreen)
+        g_list_foreach(priv->windows, fullscreen_cb, &options);
 
     g_object_notify(G_OBJECT(self), "fullscreen");
 }
diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c
index a1b9940..31c0c46 100644
--- a/src/virt-viewer-window.c
+++ b/src/virt-viewer-window.c
@@ -784,12 +784,9 @@ virt_viewer_window_set_fullscreen(VirtViewerWindow *self,
     if (fullscreen) {
         virt_viewer_window_enter_fullscreen(self, -1);
     } else {
-        /* leave all windows fullscreen state */
         if (virt_viewer_app_get_fullscreen(self->priv->app))
             g_object_set(self->priv->app, "fullscreen", FALSE, NULL);
-        /* or just this window */
-        else
-            virt_viewer_window_leave_fullscreen(self);
+        virt_viewer_window_leave_fullscreen(self);
     }
 }
 
-- 
2.5.0




More information about the virt-tools-list mailing list