ack On Wed, Feb 6, 2013 at 5:40 PM, Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > 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 -- Marc-André Lureau _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list