diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c index 5ce1d98..5003872 100644 --- a/src/virt-viewer-window.c +++ b/src/virt-viewer-window.c @@ -486,6 +486,16 @@ virt_viewer_window_move_to_monitor(VirtViewerWindow *self) mon.height); } +static gboolean +mapped(GtkWidget *widget, GdkEvent *event G_GNUC_UNUSED, + VirtViewerWindow *self) +{ + g_signal_handlers_disconnect_by_func(widget, mapped, self); + self->priv->fullscreen = FALSE; + virt_viewer_window_enter_fullscreen(self, self->priv->fullscreen_monitor); + return FALSE; +} + void virt_viewer_window_leave_fullscreen(VirtViewerWindow *self) { @@ -493,6 +503,10 @@ virt_viewer_window_leave_fullscreen(VirtViewerWindow *self) GtkWidget *menu = GTK_WIDGET(gtk_builder_get_object(priv->builder, "top-menu")); GtkCheckMenuItem *check = GTK_CHECK_MENU_ITEM(gtk_builder_get_object(priv->builder, "menu-view-fullscreen")); + /* if we enter and leave fullscreen mode before being shown, make sure to + * disconnect the mapped signal handler */ + g_signal_handlers_disconnect_by_func(priv->window, mapped, self); + if (!priv->fullscreen) return; @@ -511,16 +525,6 @@ virt_viewer_window_leave_fullscreen(VirtViewerWindow *self) } -static gboolean -mapped(GtkWidget *widget, GdkEvent *event G_GNUC_UNUSED, - VirtViewerWindow *self) -{ - g_signal_handlers_disconnect_by_func(widget, mapped, self); - self->priv->fullscreen = FALSE; - virt_viewer_window_enter_fullscreen(self, self->priv->fullscreen_monitor); - return FALSE; -} - void virt_viewer_window_enter_fullscreen(VirtViewerWindow *self, gint monitor) {