Sometimes the guest may shortly disable and then re-enable a monitor while in fullscreen mode, this happens for example when changing display resolution through gnome-display-properties inside the guest. This causes the client window-manager to remap the window, and this can cause it to end up on a different monitor. This patch fixes this by remembering the position the window is places at when going fullcreen and moving it there again when its gets (re-)shown. Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> --- src/virt-viewer-window.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c index 6adba8e..c5b485c 100644 --- a/src/virt-viewer-window.c +++ b/src/virt-viewer-window.c @@ -100,6 +100,7 @@ struct _VirtViewerWindowPrivate { gboolean grabbed; gboolean before_saved; GdkRectangle before_fullscreen; + GdkPoint fullscreen_coordinate; gboolean desktop_resize_pending; gint zoomlevel; @@ -288,6 +289,7 @@ virt_viewer_window_init (VirtViewerWindow *self) priv = self->priv; priv->auto_resize = TRUE; + priv->fullscreen_coordinate.x = priv->fullscreen_coordinate.y = -1; g_value_init(&priv->accel_setting, G_TYPE_STRING); priv->notebook = virt_viewer_notebook_new(); @@ -479,6 +481,7 @@ virt_viewer_window_leave_fullscreen(VirtViewerWindow *self) gtk_check_menu_item_set_active(check, FALSE); priv->fullscreen = FALSE; + priv->fullscreen_coordinate.x = priv->fullscreen_coordinate.y = -1; ViewAutoDrawer_SetActive(VIEW_AUTODRAWER(priv->layout), FALSE); gtk_widget_show(menu); gtk_widget_hide(priv->toolbar); @@ -526,8 +529,11 @@ virt_viewer_window_enter_fullscreen(VirtViewerWindow *self, gboolean move, gint ViewAutoDrawer_Close(VIEW_AUTODRAWER(priv->layout)); /* g_debug("enter fullscreen move:%d %d+%d", move, x, y); */ - if (move) + if (move) { gtk_window_move(GTK_WINDOW(priv->window), x, y); + priv->fullscreen_coordinate.x = x; + priv->fullscreen_coordinate.y = y; + } gtk_window_fullscreen(GTK_WINDOW(priv->window)); #ifdef G_OS_WIN32 @@ -1127,6 +1133,8 @@ virt_viewer_window_set_display(VirtViewerWindow *self, VirtViewerDisplay *displa void virt_viewer_window_show(VirtViewerWindow *self) { + VirtViewerWindowPrivate *priv = self->priv; + gtk_widget_show(self->priv->window); if (self->priv->display) @@ -1136,6 +1144,11 @@ virt_viewer_window_show(VirtViewerWindow *self) virt_viewer_window_resize(self, FALSE); self->priv->desktop_resize_pending = FALSE; } + + if (priv->fullscreen && priv->fullscreen_coordinate.x != -1) + gtk_window_move(GTK_WINDOW(priv->window), + priv->fullscreen_coordinate.x, + priv->fullscreen_coordinate.y); } void -- 1.8.1 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list