[virt-tools-list] [PATCH virt-viewer 2/6] Only fullscreen the new window
Christophe Fergeau
cfergeau at redhat.com
Fri May 17 13:25:59 UTC 2013
ACK
On Thu, May 16, 2013 at 09:33:18PM +0200, Marc-André Lureau wrote:
> From: Marc-André Lureau <marcandre.lureau at redhat.com>
>
> 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 at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/virt-tools-list/attachments/20130517/3453d364/attachment.sig>
More information about the virt-tools-list
mailing list