ACK On Thu, May 16, 2013 at 09:33:18PM +0200, Marc-André Lureau wrote: > From: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx> > > The current code will forcefully reset fullscreen all windows > when a new window is created > --- > src/virt-viewer-app.c | 39 +++++++++++++++++++++++++-------------- > 1 file changed, 25 insertions(+), 14 deletions(-) > > diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c > index 853615e..62e3603 100644 > --- a/src/virt-viewer-app.c > +++ b/src/virt-viewer-app.c > @@ -632,6 +632,24 @@ viewer_window_focus_out_cb(GtkWindow *window G_GNUC_UNUSED, > return FALSE; > } > > +static void > +app_window_try_fullscreen(VirtViewerApp *self, VirtViewerWindow *win, gint nth) > +{ > + GdkScreen *screen = gdk_screen_get_default(); > + gboolean move = > + virt_viewer_app_get_n_windows_visible(self) > 1 || > + self->priv->fullscreen_auto_conf; > + > + if (!move) > + nth = -1; > + else if (nth >= gdk_screen_get_n_monitors(screen)) { > + DEBUG_LOG("skipping display %d", nth); > + return; > + } > + > + virt_viewer_window_enter_fullscreen(win, nth); > +} > + > static VirtViewerWindow* > virt_viewer_app_window_new(VirtViewerApp *self, GtkWidget *container, gint nth) > { > @@ -645,10 +663,9 @@ virt_viewer_app_window_new(VirtViewerApp *self, GtkWidget *container, gint nth) > if (self->priv->main_window) > virt_viewer_window_set_zoom_level(window, virt_viewer_window_get_zoom_level(self->priv->main_window)); > virt_viewer_app_set_nth_window(self, nth, window); > - w = virt_viewer_window_get_window(window); > + app_window_try_fullscreen(self, window, nth); > > - /* this will set new window to fullscreen if necessary */ > - virt_viewer_app_set_fullscreen(self, self->priv->fullscreen); > + w = virt_viewer_window_get_window(window); > g_signal_connect(w, "hide", G_CALLBACK(viewer_window_visible_cb), self); > g_signal_connect(w, "show", G_CALLBACK(viewer_window_visible_cb), self); > g_signal_connect(w, "focus-in-event", G_CALLBACK(viewer_window_focus_in_cb), self); > @@ -1688,8 +1705,8 @@ virt_viewer_app_update_pretty_address(VirtViewerApp *self) > } > > typedef struct { > + VirtViewerApp *app; > gboolean fullscreen; > - gboolean move; > } FullscreenOptions; > > static void fullscreen_cb(gpointer key, > @@ -1701,15 +1718,9 @@ static void fullscreen_cb(gpointer key, > VirtViewerWindow *vwin = VIRT_VIEWER_WINDOW(value); > > DEBUG_LOG("fullscreen display %d: %d", nth, options->fullscreen); > - if (options->fullscreen) { > - GdkScreen *screen = gdk_screen_get_default(); > - > - if (nth >= gdk_screen_get_n_monitors(screen)) { > - DEBUG_LOG("skipping display %d", nth); > - return; > - } > - virt_viewer_window_enter_fullscreen(vwin, options->move ? nth : -1); > - } else > + if (options->fullscreen) > + app_window_try_fullscreen(options->app, vwin, nth); > + else > virt_viewer_window_leave_fullscreen(vwin); > } > > @@ -1734,8 +1745,8 @@ virt_viewer_app_set_fullscreen(VirtViewerApp *self, gboolean fullscreen) > { > VirtViewerAppPrivate *priv = self->priv; > FullscreenOptions options = { > + .app = self, > .fullscreen = fullscreen, > - .move = virt_viewer_app_get_n_windows_visible(self) > 1 || self->priv->fullscreen_auto_conf, > }; > > /* we iterate unconditionnaly, even if it was set before to update new windows */ > -- > 1.8.3.rc1.49.g8d97506 > > _______________________________________________ > virt-tools-list mailing list > virt-tools-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/virt-tools-list
Attachment:
pgp59jct78M9j.pgp
Description: PGP signature
_______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list