Disconnect fullscreen map-event handler when leaving fullscreen

When we enter fullscreen mode before the window is shown, we set up a signal
handler to enter fullscreen mode when the window is mapped.  If we then leave
fullscreen mode before the window is mapped, we don't disconnect this handler,
so it will still enter fullscreen mode when it is shown.

Fixes rhbz #1009513
This commit is contained in:
Jonathon Jongsma 2013-11-07 16:15:10 -06:00 committed by Christophe Fergeau
parent bd914bdea2
commit 2ec0387adc

View File

@ -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)
{