--- a/src/gs-window-x11.c
+++ b/src/gs-window-x11.c
@@ -631,6 +631,14 @@
#endif
}
+static gboolean
+on_screensaver_plug_removed (GtkSocket *socket, GSWindow *window)
+{
+ gtk_widget_hide (GTK_WIDGET (socket));
+ window->priv->screensaver = NULL;
+ return FALSE;
+}
+
static void
create_screensaver_socket (GSWindow *window,
guint32 id)
@@ -639,6 +647,10 @@
gtk_stack_add_named (GTK_STACK (window->priv->stack), window->priv->screensaver, "screensaver");
gtk_widget_show (window->priv->screensaver);
+
+ g_signal_connect (window->priv->screensaver, "plug-removed",
+ G_CALLBACK (on_screensaver_plug_removed), window);
+
gtk_socket_add_id (GTK_SOCKET (window->priv->screensaver), id);
gs_window_show_screensaver (window);
}
@@ -895,6 +907,8 @@
g_return_if_fail (GS_IS_WINDOW (window));
gs_window_cancel_unlock_request (window);
+
+ screensaver_command_finish (window);
gtk_widget_destroy (GTK_WIDGET (window));
}
@@ -2577,7 +2591,6 @@
remove_command_watches (window);
- screensaver_command_finish (window);
gs_window_dialog_finish (window);
if (window->priv->background_surface) {
--- a/src/gs-lock-plug.c
+++ b/src/gs-lock-plug.c
@@ -1561,8 +1561,7 @@
hbox_user = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_pack_start (GTK_BOX (plug->priv->vbox), hbox_user, FALSE, FALSE, 0);
- gtk_misc_set_alignment (GTK_MISC (hbox_user), 0.5, 0.5);
-
+
plug->priv->auth_face_image = gtk_image_new ();
gtk_box_pack_start (GTK_BOX (hbox_user), plug->priv->auth_face_image, TRUE, TRUE, 0);
gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_face_image), 1, 0.5);