diff --git a/gdm-2.23.92-host-wild.patch b/gdm-2.23.92-host-wild.patch
deleted file mode 100644
index e287187..0000000
--- a/gdm-2.23.92-host-wild.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: gdm-2.23.92/daemon/gdm-display-access-file.c
-===================================================================
---- gdm-2.23.92.orig/daemon/gdm-display-access-file.c
-+++ gdm-2.23.92/daemon/gdm-display-access-file.c
-@@ -409,7 +409,7 @@ _get_auth_info_for_display (GdmDisplayAc
- gdm_display_is_local (display, &is_local, NULL);
-
- if (is_local) {
-- *family = FamilyLocal;
-+ *family = FamilyWild;
- *address = g_strdup (g_get_host_name ());
- } else {
- *family = FamilyWild;
diff --git a/gdm-domain-logon.patch b/gdm-domain-logon.patch
index 6bdf7c2..bb2d582 100644
--- a/gdm-domain-logon.patch
+++ b/gdm-domain-logon.patch
@@ -1,30 +1,621 @@
-Index: gui/simple-greeter/gdm-simple-greeter.schemas.in
-===================================================================
---- gui/simple-greeter/gdm-simple-greeter.schemas.in (revision 6548)
-+++ gui/simple-greeter/gdm-simple-greeter.schemas.in (working copy)
-@@ -92,6 +92,18 @@
-
-
-
-+ /schemas/apps/gdm/simple-greeter/recent-domains
-+ /apps/gdm/simple-greeter/recent-domains
-+ gdm-simple-greeter
-+ list
-+ string
-+ []
-+
-+ Recently selected domains
-+ Set to a list of login domains to be shown by default at the login window.
-+
-+
-+
- /schemas/apps/gdm/simple-greeter/wm_use_compiz
- /apps/gdm/simple-greeter/wm_use_compiz
- gdm-simple-greeter
-Index: gui/simple-greeter/gdm-domain-option-widget.c
-===================================================================
---- gui/simple-greeter/gdm-domain-option-widget.c (revision 0)
-+++ gui/simple-greeter/gdm-domain-option-widget.c (revision 0)
+diff -Nurp gdm-2.24.0-pre/gui/simple-greeter/gdm-chooser-widget.c gdm-2.24.0-post/gui/simple-greeter/gdm-chooser-widget.c
+--- gdm-2.24.0-pre/gui/simple-greeter/gdm-chooser-widget.c 2008-09-22 12:01:21.000000000 -0500
++++ gdm-2.24.0-post/gui/simple-greeter/gdm-chooser-widget.c 2008-10-16 14:29:40.000000000 -0500
+@@ -2105,6 +2105,20 @@ gdm_chooser_widget_remove_item (GdmChoos
+ move_cursor_to_top (widget);
+ }
+
++void
++gdm_chooser_widget_remove_all_items (GdmChooserWidget *widget)
++{
++ widget->priv->number_of_rows_with_images = 0;
++ widget->priv->number_of_rows_with_status = 0;
++ widget->priv->number_of_separated_rows = 0;
++ widget->priv->number_of_normal_rows = 0;
++
++ gtk_list_store_clear (widget->priv->list_store);
++
++ update_separator_visibility (widget);
++ move_cursor_to_top (widget);
++}
++
+ gboolean
+ gdm_chooser_widget_lookup_item (GdmChooserWidget *widget,
+ const char *id,
+diff -Nurp gdm-2.24.0-pre/gui/simple-greeter/gdm-chooser-widget.h gdm-2.24.0-post/gui/simple-greeter/gdm-chooser-widget.h
+--- gdm-2.24.0-pre/gui/simple-greeter/gdm-chooser-widget.h 2008-09-22 12:01:21.000000000 -0500
++++ gdm-2.24.0-post/gui/simple-greeter/gdm-chooser-widget.h 2008-10-16 14:29:40.000000000 -0500
+@@ -96,6 +96,8 @@ void gdm_chooser_widget_update_i
+ void gdm_chooser_widget_remove_item (GdmChooserWidget *widget,
+ const char *id);
+
++void gdm_chooser_widget_remove_all_items (GdmChooserWidget *widget);
++
+ gboolean gdm_chooser_widget_lookup_item (GdmChooserWidget *widget,
+ const char *id,
+ GdkPixbuf **image,
+diff -Nurp gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-chooser-dialog.c gdm-2.24.0-post/gui/simple-greeter/gdm-domain-chooser-dialog.c
+--- gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-chooser-dialog.c 1969-12-31 18:00:00.000000000 -0600
++++ gdm-2.24.0-post/gui/simple-greeter/gdm-domain-chooser-dialog.c 2008-10-16 14:29:40.000000000 -0500
+@@ -0,0 +1,207 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
++ *
++ * Copyright (C) 2008 Hans Petter Jansson
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * Written by: Hans Petter Jansson
++ */
++
++#include "config.h"
++
++#include
++#include
++#include
++#include
++
++#include
++
++#include
++#include
++#include
++#include
++
++#include "gdm-domain-chooser-widget.h"
++#include "gdm-domain-chooser-dialog.h"
++
++#define GDM_DOMAIN_CHOOSER_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_DOMAIN_CHOOSER_DIALOG, GdmDomainChooserDialogPrivate))
++
++struct GdmDomainChooserDialogPrivate
++{
++ GtkWidget *chooser_widget;
++};
++
++
++static void gdm_domain_chooser_dialog_class_init (GdmDomainChooserDialogClass *klass);
++static void gdm_domain_chooser_dialog_init (GdmDomainChooserDialog *domain_chooser_dialog);
++static void gdm_domain_chooser_dialog_finalize (GObject *object);
++
++G_DEFINE_TYPE (GdmDomainChooserDialog, gdm_domain_chooser_dialog, GTK_TYPE_DIALOG)
++
++char *
++gdm_domain_chooser_dialog_get_current_domain_name (GdmDomainChooserDialog *dialog)
++{
++ char *domain_name;
++
++ g_return_val_if_fail (GDM_IS_DOMAIN_CHOOSER_DIALOG (dialog), NULL);
++
++ domain_name = gdm_domain_chooser_widget_get_current_domain_name (GDM_DOMAIN_CHOOSER_WIDGET (dialog->priv->chooser_widget));
++
++ return domain_name;
++}
++
++void
++gdm_domain_chooser_dialog_set_current_domain_name (GdmDomainChooserDialog *dialog,
++ const char *domain_name)
++{
++ g_return_if_fail (GDM_IS_DOMAIN_CHOOSER_DIALOG (dialog));
++
++ gdm_domain_chooser_widget_set_current_domain_name (GDM_DOMAIN_CHOOSER_WIDGET (dialog->priv->chooser_widget), domain_name);
++}
++
++static void
++gdm_domain_chooser_dialog_size_request (GtkWidget *widget,
++ GtkRequisition *requisition)
++{
++ int screen_w;
++ int screen_h;
++ GtkRequisition child_requisition;
++
++ if (GTK_WIDGET_CLASS (gdm_domain_chooser_dialog_parent_class)->size_request) {
++ GTK_WIDGET_CLASS (gdm_domain_chooser_dialog_parent_class)->size_request (widget, requisition);
++ }
++
++ screen_w = gdk_screen_get_width (gtk_widget_get_screen (widget));
++ screen_h = gdk_screen_get_height (gtk_widget_get_screen (widget));
++
++ gtk_widget_get_child_requisition (GTK_BIN (widget)->child, &child_requisition);
++ *requisition = child_requisition;
++
++ requisition->width += 2 * GTK_CONTAINER (widget)->border_width;
++ requisition->height += 2 * GTK_CONTAINER (widget)->border_width;
++
++ requisition->width = MIN (requisition->width, .50 * screen_w);
++ requisition->height = MIN (requisition->height, .80 * screen_h);
++}
++
++static void
++gdm_domain_chooser_dialog_realize (GtkWidget *widget)
++{
++ GdmDomainChooserDialog *chooser_dialog;
++ GdkWindow *root_window;
++ GdkCursor *cursor;
++
++ root_window = gdk_screen_get_root_window (gdk_screen_get_default ());
++ cursor = gdk_cursor_new (GDK_WATCH);
++ gdk_window_set_cursor (root_window, cursor);
++ gdk_cursor_unref (cursor);
++
++ chooser_dialog = GDM_DOMAIN_CHOOSER_DIALOG (widget);
++
++ gtk_widget_show (chooser_dialog->priv->chooser_widget);
++
++ GTK_WIDGET_CLASS (gdm_domain_chooser_dialog_parent_class)->realize (widget);
++
++ cursor = gdk_cursor_new (GDK_LEFT_PTR);
++ gdk_window_set_cursor (root_window, cursor);
++ gdk_cursor_unref (cursor);
++}
++
++static void
++gdm_domain_chooser_dialog_class_init (GdmDomainChooserDialogClass *klass)
++{
++ GObjectClass *object_class = G_OBJECT_CLASS (klass);
++ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
++
++ object_class->finalize = gdm_domain_chooser_dialog_finalize;
++ widget_class->size_request = gdm_domain_chooser_dialog_size_request;
++ widget_class->realize = gdm_domain_chooser_dialog_realize;
++
++ g_type_class_add_private (klass, sizeof (GdmDomainChooserDialogPrivate));
++}
++
++static gboolean
++respond (GdmDomainChooserDialog *dialog)
++{
++ gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
++ return FALSE;
++}
++
++static void
++queue_response (GdmDomainChooserDialog *dialog)
++{
++ g_idle_add ((GSourceFunc) respond, dialog);
++}
++
++static void
++gdm_domain_chooser_dialog_init (GdmDomainChooserDialog *dialog)
++{
++
++ dialog->priv = GDM_DOMAIN_CHOOSER_DIALOG_GET_PRIVATE (dialog);
++
++ dialog->priv->chooser_widget = gdm_domain_chooser_widget_new ();
++ gdm_chooser_widget_set_hide_inactive_items (GDM_CHOOSER_WIDGET (dialog->priv->chooser_widget),
++ FALSE);
++
++ gdm_domain_chooser_widget_set_current_domain_name (GDM_DOMAIN_CHOOSER_WIDGET (dialog->priv->chooser_widget),
++ "__local");
++ gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), dialog->priv->chooser_widget);
++
++ g_signal_connect_swapped (G_OBJECT (dialog->priv->chooser_widget),
++ "activated", G_CALLBACK (queue_response),
++ dialog);
++
++ gtk_dialog_add_buttons (GTK_DIALOG (dialog),
++ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
++ GTK_STOCK_OK, GTK_RESPONSE_OK,
++ NULL);
++
++ gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
++ gtk_container_set_border_width (GTK_CONTAINER (dialog), 12);
++ gtk_container_set_border_width (GTK_CONTAINER (dialog->priv->chooser_widget), 5);
++ gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER_ALWAYS);
++ gtk_window_set_default_size (GTK_WINDOW (dialog), 512, 440);
++ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
++}
++
++static void
++gdm_domain_chooser_dialog_finalize (GObject *object)
++{
++ GdmDomainChooserDialog *domain_chooser_dialog;
++
++ g_return_if_fail (object != NULL);
++ g_return_if_fail (GDM_IS_DOMAIN_CHOOSER_DIALOG (object));
++
++ domain_chooser_dialog = GDM_DOMAIN_CHOOSER_DIALOG (object);
++
++ g_return_if_fail (domain_chooser_dialog->priv != NULL);
++
++ G_OBJECT_CLASS (gdm_domain_chooser_dialog_parent_class)->finalize (object);
++}
++
++GtkWidget *
++gdm_domain_chooser_dialog_new (void)
++{
++ GObject *object;
++
++ object = g_object_new (GDM_TYPE_DOMAIN_CHOOSER_DIALOG,
++ "icon-name", "preferences-system-network",
++ "title", _("Domains"),
++ "border-width", 8,
++ "modal", TRUE,
++ NULL);
++
++ return GTK_WIDGET (object);
++}
+diff -Nurp gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-chooser-dialog.h gdm-2.24.0-post/gui/simple-greeter/gdm-domain-chooser-dialog.h
+--- gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-chooser-dialog.h 1969-12-31 18:00:00.000000000 -0600
++++ gdm-2.24.0-post/gui/simple-greeter/gdm-domain-chooser-dialog.h 2008-10-16 14:29:40.000000000 -0500
+@@ -0,0 +1,60 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
++ *
++ * Copyright (C) 2008 Hans Petter Jansson
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * Written by: Hans Petter Jansson
++ */
++
++#ifndef __GDM_DOMAIN_CHOOSER_DIALOG_H
++#define __GDM_DOMAIN_CHOOSER_DIALOG_H
++
++#include
++#include
++
++G_BEGIN_DECLS
++
++#define GDM_TYPE_DOMAIN_CHOOSER_DIALOG (gdm_domain_chooser_dialog_get_type ())
++#define GDM_DOMAIN_CHOOSER_DIALOG(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDM_TYPE_DOMAIN_CHOOSER_DIALOG, GdmDomainChooserDialog))
++#define GDM_DOMAIN_CHOOSER_DIALOG_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GDM_TYPE_DOMAIN_CHOOSER_DIALOG, GdmDomainChooserDialogClass))
++#define GDM_IS_DOMAIN_CHOOSER_DIALOG(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDM_TYPE_DOMAIN_CHOOSER_DIALOG))
++#define GDM_IS_DOMAIN_CHOOSER_DIALOG_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GDM_TYPE_DOMAIN_CHOOSER_DIALOG))
++#define GDM_DOMAIN_CHOOSER_DIALOG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDM_TYPE_DOMAIN_CHOOSER_DIALOG, GdmDomainChooserDialogClass))
++
++typedef struct GdmDomainChooserDialogPrivate GdmDomainChooserDialogPrivate;
++
++typedef struct
++{
++ GtkDialog parent;
++ GdmDomainChooserDialogPrivate *priv;
++} GdmDomainChooserDialog;
++
++typedef struct
++{
++ GtkDialogClass parent_class;
++} GdmDomainChooserDialogClass;
++
++GType gdm_domain_chooser_dialog_get_type (void);
++
++GtkWidget * gdm_domain_chooser_dialog_new (void);
++
++char * gdm_domain_chooser_dialog_get_current_domain_name (GdmDomainChooserDialog *dialog);
++void gdm_domain_chooser_dialog_set_current_domain_name (GdmDomainChooserDialog *dialog,
++ const char *domain_name);
++
++G_END_DECLS
++
++#endif /* __GDM_DOMAIN_CHOOSER_DIALOG_H */
+diff -Nurp gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-chooser-widget.c gdm-2.24.0-post/gui/simple-greeter/gdm-domain-chooser-widget.c
+--- gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-chooser-widget.c 1969-12-31 18:00:00.000000000 -0600
++++ gdm-2.24.0-post/gui/simple-greeter/gdm-domain-chooser-widget.c 2008-10-16 14:29:40.000000000 -0500
+@@ -0,0 +1,237 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
++ *
++ * Copyright (C) 2008 Hans Petter Jansson
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * Written by: Hans Petter Jansson
++ */
++
++#include "config.h"
++
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++
++#include
++
++#include
++#include
++#include
++#include
++
++#include "gdm-domain-chooser-widget.h"
++#include "gdm-chooser-widget.h"
++#include "gdm-domain-provider.h"
++
++#define GDM_DOMAIN_CHOOSER_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_DOMAIN_CHOOSER_WIDGET, GdmDomainChooserWidgetPrivate))
++
++struct GdmDomainChooserWidgetPrivate
++{
++ GdmDomainProvider *domain_provider;
++};
++
++static void gdm_domain_chooser_widget_class_init (GdmDomainChooserWidgetClass *klass);
++static void gdm_domain_chooser_widget_init (GdmDomainChooserWidget *domain_chooser_widget);
++static void gdm_domain_chooser_widget_finalize (GObject *object);
++
++G_DEFINE_TYPE (GdmDomainChooserWidget, gdm_domain_chooser_widget, GDM_TYPE_CHOOSER_WIDGET)
++
++#if 0
++
++enum {
++ CHOOSER_LIST_TITLE_COLUMN = 0,
++ CHOOSER_LIST_TRANSLATED_COLUMN,
++ CHOOSER_LIST_DOMAIN_COLUMN
++};
++
++#endif
++
++static gchar *
++convert_domain_name_to_display (const gchar *domain_name)
++{
++ gchar *utf8_name;
++ gchar *normalized_name;
++
++ utf8_name = g_locale_to_utf8 (domain_name, -1, NULL, NULL, NULL);
++ if (!utf8_name)
++ return NULL;
++
++ normalized_name = g_utf8_strdown (utf8_name, -1);
++ g_free (utf8_name);
++
++ return normalized_name;
++}
++
++char *
++gdm_domain_chooser_widget_get_current_domain_name (GdmDomainChooserWidget *widget)
++{
++ char *domain_name;
++
++ g_return_val_if_fail (GDM_IS_DOMAIN_CHOOSER_WIDGET (widget), NULL);
++
++ domain_name = gdm_chooser_widget_get_selected_item (GDM_CHOOSER_WIDGET (widget));
++
++ if (domain_name == NULL) {
++ domain_name = g_strdup ("__local");
++ }
++
++ return domain_name;
++}
++
++void
++gdm_domain_chooser_widget_set_current_domain_name (GdmDomainChooserWidget *widget,
++ const char *domain_name)
++{
++ g_return_if_fail (GDM_IS_DOMAIN_CHOOSER_WIDGET (widget));
++
++ if (domain_name == NULL) {
++ gdm_chooser_widget_set_selected_item (GDM_CHOOSER_WIDGET (widget),
++ NULL);
++ return;
++ }
++
++ gdm_chooser_widget_set_selected_item (GDM_CHOOSER_WIDGET (widget),
++ domain_name);
++}
++
++static void
++populate_widget (GdmDomainChooserWidget *domain_chooser_widget)
++{
++ GdmDomainChooserWidgetPrivate *priv = domain_chooser_widget->priv;
++ GdmChooserWidget *chooser_widget = GDM_CHOOSER_WIDGET (domain_chooser_widget);
++ GList *domain_list;
++ GList *l;
++ gchar *current_domain_name;
++
++ domain_list = gdm_domain_provider_peek_domains (priv->domain_provider);
++
++ current_domain_name = gdm_domain_chooser_widget_get_current_domain_name (domain_chooser_widget);
++ gdm_chooser_widget_remove_all_items (chooser_widget);
++
++ for (l = domain_list; l; l = g_list_next (l)) {
++ const gchar *domain_name = l->data;
++ gchar *display_name;
++
++ display_name = convert_domain_name_to_display (domain_name);
++ if (!display_name)
++ continue;
++
++ gdm_chooser_widget_add_item (chooser_widget,
++ domain_name,
++ NULL,
++ display_name,
++ display_name,
++ 0,
++ FALSE,
++ FALSE);
++
++ g_free (display_name);
++ }
++
++ gdm_chooser_widget_add_item (chooser_widget,
++ "__local",
++ NULL,
++ _("Local login"),
++ _("Log in to the local computer."),
++ 0,
++ FALSE,
++ TRUE);
++
++ gdm_domain_chooser_widget_set_current_domain_name (domain_chooser_widget, current_domain_name);
++}
++
++static void
++gdm_domain_chooser_widget_dispose (GObject *object)
++{
++ G_OBJECT_CLASS (gdm_domain_chooser_widget_parent_class)->dispose (object);
++}
++
++static void
++gdm_domain_chooser_widget_realize (GtkWidget *widget)
++{
++ GdmDomainChooserWidget *chooser;
++
++ chooser = GDM_DOMAIN_CHOOSER_WIDGET (widget);
++
++ GTK_WIDGET_CLASS (gdm_domain_chooser_widget_parent_class)->realize (widget);
++}
++
++static void
++gdm_domain_chooser_widget_class_init (GdmDomainChooserWidgetClass *klass)
++{
++ GObjectClass *object_class = G_OBJECT_CLASS (klass);
++ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
++
++ object_class->dispose = gdm_domain_chooser_widget_dispose;
++ object_class->finalize = gdm_domain_chooser_widget_finalize;
++ widget_class->realize = gdm_domain_chooser_widget_realize;
++
++ g_type_class_add_private (klass, sizeof (GdmDomainChooserWidgetPrivate));
++}
++
++static void
++gdm_domain_chooser_widget_init (GdmDomainChooserWidget *domain_chooser_widget)
++{
++ GdmDomainChooserWidgetPrivate *priv;
++
++ priv = domain_chooser_widget->priv = GDM_DOMAIN_CHOOSER_WIDGET_GET_PRIVATE (domain_chooser_widget);
++
++ priv->domain_provider = gdm_get_domain_provider ();
++ g_signal_connect_swapped (priv->domain_provider, "changed",
++ (GCallback) populate_widget, domain_chooser_widget);
++
++ populate_widget (domain_chooser_widget);
++
++ gdm_chooser_widget_set_separator_position (GDM_CHOOSER_WIDGET (domain_chooser_widget),
++ GDM_CHOOSER_WIDGET_POSITION_TOP);
++}
++
++static void
++gdm_domain_chooser_widget_finalize (GObject *object)
++{
++ GdmDomainChooserWidgetPrivate *priv;
++ GdmDomainChooserWidget *domain_chooser_widget;
++
++ g_return_if_fail (object != NULL);
++ g_return_if_fail (GDM_IS_DOMAIN_CHOOSER_WIDGET (object));
++
++ domain_chooser_widget = GDM_DOMAIN_CHOOSER_WIDGET (object);
++ priv = domain_chooser_widget->priv;
++
++ g_return_if_fail (priv != NULL);
++
++ g_signal_handlers_disconnect_by_func (priv->domain_provider, populate_widget, domain_chooser_widget);
++
++ G_OBJECT_CLASS (gdm_domain_chooser_widget_parent_class)->finalize (object);
++}
++
++GtkWidget *
++gdm_domain_chooser_widget_new (void)
++{
++ GObject *object;
++
++ object = g_object_new (GDM_TYPE_DOMAIN_CHOOSER_WIDGET,
++ "inactive-text", _("_Domains:"),
++ "active-text", _("_Domain:"),
++ NULL);
++
++ return GTK_WIDGET (object);
++}
+diff -Nurp gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-chooser-widget.h gdm-2.24.0-post/gui/simple-greeter/gdm-domain-chooser-widget.h
+--- gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-chooser-widget.h 1969-12-31 18:00:00.000000000 -0600
++++ gdm-2.24.0-post/gui/simple-greeter/gdm-domain-chooser-widget.h 2008-10-16 14:29:40.000000000 -0500
+@@ -0,0 +1,59 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
++ *
++ * Copyright (C) 2008 Hans Petter Jansson
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * Written by: Hans Petter Jansson
++ */
++
++#ifndef __GDM_DOMAIN_CHOOSER_WIDGET_H
++#define __GDM_DOMAIN_CHOOSER_WIDGET_H
++
++#include
++#include "gdm-chooser-widget.h"
++
++G_BEGIN_DECLS
++
++#define GDM_TYPE_DOMAIN_CHOOSER_WIDGET (gdm_domain_chooser_widget_get_type ())
++#define GDM_DOMAIN_CHOOSER_WIDGET(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDM_TYPE_DOMAIN_CHOOSER_WIDGET, GdmDomainChooserWidget))
++#define GDM_DOMAIN_CHOOSER_WIDGET_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GDM_TYPE_DOMAIN_CHOOSER_WIDGET, GdmDomainChooserWidgetClass))
++#define GDM_IS_DOMAIN_CHOOSER_WIDGET(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDM_TYPE_DOMAIN_CHOOSER_WIDGET))
++#define GDM_IS_DOMAIN_CHOOSER_WIDGET_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GDM_TYPE_DOMAIN_CHOOSER_WIDGET))
++#define GDM_DOMAIN_CHOOSER_WIDGET_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDM_TYPE_DOMAIN_CHOOSER_WIDGET, GdmDomainChooserWidgetClass))
++
++typedef struct GdmDomainChooserWidgetPrivate GdmDomainChooserWidgetPrivate;
++
++typedef struct
++{
++ GdmChooserWidget parent;
++ GdmDomainChooserWidgetPrivate *priv;
++} GdmDomainChooserWidget;
++
++typedef struct
++{
++ GdmChooserWidgetClass parent_class;
++} GdmDomainChooserWidgetClass;
++
++GType gdm_domain_chooser_widget_get_type (void);
++GtkWidget * gdm_domain_chooser_widget_new (void);
++
++char * gdm_domain_chooser_widget_get_current_domain_name (GdmDomainChooserWidget *widget);
++void gdm_domain_chooser_widget_set_current_domain_name (GdmDomainChooserWidget *widget,
++ const char *lang_name);
++
++G_END_DECLS
++
++#endif /* __GDM_DOMAIN_CHOOSER_WIDGET_H */
+diff -Nurp gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-option-widget.c gdm-2.24.0-post/gui/simple-greeter/gdm-domain-option-widget.c
+--- gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-option-widget.c 1969-12-31 18:00:00.000000000 -0600
++++ gdm-2.24.0-post/gui/simple-greeter/gdm-domain-option-widget.c 2008-10-16 14:29:40.000000000 -0500
@@ -0,0 +1,379 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
@@ -405,10 +996,9 @@ Index: gui/simple-greeter/gdm-domain-option-widget.c
+
+ gdm_option_widget_set_active_item (GDM_OPTION_WIDGET (widget), domain_name);
+}
-Index: gui/simple-greeter/gdm-domain-option-widget.h
-===================================================================
---- gui/simple-greeter/gdm-domain-option-widget.h (revision 0)
-+++ gui/simple-greeter/gdm-domain-option-widget.h (revision 0)
+diff -Nurp gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-option-widget.h gdm-2.24.0-post/gui/simple-greeter/gdm-domain-option-widget.h
+--- gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-option-widget.h 1969-12-31 18:00:00.000000000 -0600
++++ gdm-2.24.0-post/gui/simple-greeter/gdm-domain-option-widget.h 2008-10-16 14:29:40.000000000 -0500
@@ -0,0 +1,59 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
@@ -469,593 +1059,9 @@ Index: gui/simple-greeter/gdm-domain-option-widget.h
+ const char *domain_name);
+
+#endif /* __GDM_DOMAIN_OPTION_WIDGET_H */
-Index: gui/simple-greeter/gdm-domain-chooser-dialog.c
-===================================================================
---- gui/simple-greeter/gdm-domain-chooser-dialog.c (revision 0)
-+++ gui/simple-greeter/gdm-domain-chooser-dialog.c (revision 0)
-@@ -0,0 +1,207 @@
-+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ *
-+ * Copyright (C) 2008 Hans Petter Jansson
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * Written by: Hans Petter Jansson
-+ */
-+
-+#include "config.h"
-+
-+#include
-+#include
-+#include
-+#include
-+
-+#include
-+
-+#include
-+#include
-+#include
-+#include
-+
-+#include "gdm-domain-chooser-widget.h"
-+#include "gdm-domain-chooser-dialog.h"
-+
-+#define GDM_DOMAIN_CHOOSER_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_DOMAIN_CHOOSER_DIALOG, GdmDomainChooserDialogPrivate))
-+
-+struct GdmDomainChooserDialogPrivate
-+{
-+ GtkWidget *chooser_widget;
-+};
-+
-+
-+static void gdm_domain_chooser_dialog_class_init (GdmDomainChooserDialogClass *klass);
-+static void gdm_domain_chooser_dialog_init (GdmDomainChooserDialog *domain_chooser_dialog);
-+static void gdm_domain_chooser_dialog_finalize (GObject *object);
-+
-+G_DEFINE_TYPE (GdmDomainChooserDialog, gdm_domain_chooser_dialog, GTK_TYPE_DIALOG)
-+
-+char *
-+gdm_domain_chooser_dialog_get_current_domain_name (GdmDomainChooserDialog *dialog)
-+{
-+ char *domain_name;
-+
-+ g_return_val_if_fail (GDM_IS_DOMAIN_CHOOSER_DIALOG (dialog), NULL);
-+
-+ domain_name = gdm_domain_chooser_widget_get_current_domain_name (GDM_DOMAIN_CHOOSER_WIDGET (dialog->priv->chooser_widget));
-+
-+ return domain_name;
-+}
-+
-+void
-+gdm_domain_chooser_dialog_set_current_domain_name (GdmDomainChooserDialog *dialog,
-+ const char *domain_name)
-+{
-+ g_return_if_fail (GDM_IS_DOMAIN_CHOOSER_DIALOG (dialog));
-+
-+ gdm_domain_chooser_widget_set_current_domain_name (GDM_DOMAIN_CHOOSER_WIDGET (dialog->priv->chooser_widget), domain_name);
-+}
-+
-+static void
-+gdm_domain_chooser_dialog_size_request (GtkWidget *widget,
-+ GtkRequisition *requisition)
-+{
-+ int screen_w;
-+ int screen_h;
-+ GtkRequisition child_requisition;
-+
-+ if (GTK_WIDGET_CLASS (gdm_domain_chooser_dialog_parent_class)->size_request) {
-+ GTK_WIDGET_CLASS (gdm_domain_chooser_dialog_parent_class)->size_request (widget, requisition);
-+ }
-+
-+ screen_w = gdk_screen_get_width (gtk_widget_get_screen (widget));
-+ screen_h = gdk_screen_get_height (gtk_widget_get_screen (widget));
-+
-+ gtk_widget_get_child_requisition (GTK_BIN (widget)->child, &child_requisition);
-+ *requisition = child_requisition;
-+
-+ requisition->width += 2 * GTK_CONTAINER (widget)->border_width;
-+ requisition->height += 2 * GTK_CONTAINER (widget)->border_width;
-+
-+ requisition->width = MIN (requisition->width, .50 * screen_w);
-+ requisition->height = MIN (requisition->height, .80 * screen_h);
-+}
-+
-+static void
-+gdm_domain_chooser_dialog_realize (GtkWidget *widget)
-+{
-+ GdmDomainChooserDialog *chooser_dialog;
-+ GdkWindow *root_window;
-+ GdkCursor *cursor;
-+
-+ root_window = gdk_screen_get_root_window (gdk_screen_get_default ());
-+ cursor = gdk_cursor_new (GDK_WATCH);
-+ gdk_window_set_cursor (root_window, cursor);
-+ gdk_cursor_unref (cursor);
-+
-+ chooser_dialog = GDM_DOMAIN_CHOOSER_DIALOG (widget);
-+
-+ gtk_widget_show (chooser_dialog->priv->chooser_widget);
-+
-+ GTK_WIDGET_CLASS (gdm_domain_chooser_dialog_parent_class)->realize (widget);
-+
-+ cursor = gdk_cursor_new (GDK_LEFT_PTR);
-+ gdk_window_set_cursor (root_window, cursor);
-+ gdk_cursor_unref (cursor);
-+}
-+
-+static void
-+gdm_domain_chooser_dialog_class_init (GdmDomainChooserDialogClass *klass)
-+{
-+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
-+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
-+
-+ object_class->finalize = gdm_domain_chooser_dialog_finalize;
-+ widget_class->size_request = gdm_domain_chooser_dialog_size_request;
-+ widget_class->realize = gdm_domain_chooser_dialog_realize;
-+
-+ g_type_class_add_private (klass, sizeof (GdmDomainChooserDialogPrivate));
-+}
-+
-+static gboolean
-+respond (GdmDomainChooserDialog *dialog)
-+{
-+ gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
-+ return FALSE;
-+}
-+
-+static void
-+queue_response (GdmDomainChooserDialog *dialog)
-+{
-+ g_idle_add ((GSourceFunc) respond, dialog);
-+}
-+
-+static void
-+gdm_domain_chooser_dialog_init (GdmDomainChooserDialog *dialog)
-+{
-+
-+ dialog->priv = GDM_DOMAIN_CHOOSER_DIALOG_GET_PRIVATE (dialog);
-+
-+ dialog->priv->chooser_widget = gdm_domain_chooser_widget_new ();
-+ gdm_chooser_widget_set_hide_inactive_items (GDM_CHOOSER_WIDGET (dialog->priv->chooser_widget),
-+ FALSE);
-+
-+ gdm_domain_chooser_widget_set_current_domain_name (GDM_DOMAIN_CHOOSER_WIDGET (dialog->priv->chooser_widget),
-+ "__local");
-+ gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), dialog->priv->chooser_widget);
-+
-+ g_signal_connect_swapped (G_OBJECT (dialog->priv->chooser_widget),
-+ "activated", G_CALLBACK (queue_response),
-+ dialog);
-+
-+ gtk_dialog_add_buttons (GTK_DIALOG (dialog),
-+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-+ GTK_STOCK_OK, GTK_RESPONSE_OK,
-+ NULL);
-+
-+ gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
-+ gtk_container_set_border_width (GTK_CONTAINER (dialog), 12);
-+ gtk_container_set_border_width (GTK_CONTAINER (dialog->priv->chooser_widget), 5);
-+ gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER_ALWAYS);
-+ gtk_window_set_default_size (GTK_WINDOW (dialog), 512, 440);
-+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
-+}
-+
-+static void
-+gdm_domain_chooser_dialog_finalize (GObject *object)
-+{
-+ GdmDomainChooserDialog *domain_chooser_dialog;
-+
-+ g_return_if_fail (object != NULL);
-+ g_return_if_fail (GDM_IS_DOMAIN_CHOOSER_DIALOG (object));
-+
-+ domain_chooser_dialog = GDM_DOMAIN_CHOOSER_DIALOG (object);
-+
-+ g_return_if_fail (domain_chooser_dialog->priv != NULL);
-+
-+ G_OBJECT_CLASS (gdm_domain_chooser_dialog_parent_class)->finalize (object);
-+}
-+
-+GtkWidget *
-+gdm_domain_chooser_dialog_new (void)
-+{
-+ GObject *object;
-+
-+ object = g_object_new (GDM_TYPE_DOMAIN_CHOOSER_DIALOG,
-+ "icon-name", "preferences-system-network",
-+ "title", _("Domains"),
-+ "border-width", 8,
-+ "modal", TRUE,
-+ NULL);
-+
-+ return GTK_WIDGET (object);
-+}
-Index: gui/simple-greeter/gdm-domain-chooser-dialog.h
-===================================================================
---- gui/simple-greeter/gdm-domain-chooser-dialog.h (revision 0)
-+++ gui/simple-greeter/gdm-domain-chooser-dialog.h (revision 0)
-@@ -0,0 +1,60 @@
-+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ *
-+ * Copyright (C) 2008 Hans Petter Jansson
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * Written by: Hans Petter Jansson
-+ */
-+
-+#ifndef __GDM_DOMAIN_CHOOSER_DIALOG_H
-+#define __GDM_DOMAIN_CHOOSER_DIALOG_H
-+
-+#include
-+#include
-+
-+G_BEGIN_DECLS
-+
-+#define GDM_TYPE_DOMAIN_CHOOSER_DIALOG (gdm_domain_chooser_dialog_get_type ())
-+#define GDM_DOMAIN_CHOOSER_DIALOG(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDM_TYPE_DOMAIN_CHOOSER_DIALOG, GdmDomainChooserDialog))
-+#define GDM_DOMAIN_CHOOSER_DIALOG_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GDM_TYPE_DOMAIN_CHOOSER_DIALOG, GdmDomainChooserDialogClass))
-+#define GDM_IS_DOMAIN_CHOOSER_DIALOG(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDM_TYPE_DOMAIN_CHOOSER_DIALOG))
-+#define GDM_IS_DOMAIN_CHOOSER_DIALOG_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GDM_TYPE_DOMAIN_CHOOSER_DIALOG))
-+#define GDM_DOMAIN_CHOOSER_DIALOG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDM_TYPE_DOMAIN_CHOOSER_DIALOG, GdmDomainChooserDialogClass))
-+
-+typedef struct GdmDomainChooserDialogPrivate GdmDomainChooserDialogPrivate;
-+
-+typedef struct
-+{
-+ GtkDialog parent;
-+ GdmDomainChooserDialogPrivate *priv;
-+} GdmDomainChooserDialog;
-+
-+typedef struct
-+{
-+ GtkDialogClass parent_class;
-+} GdmDomainChooserDialogClass;
-+
-+GType gdm_domain_chooser_dialog_get_type (void);
-+
-+GtkWidget * gdm_domain_chooser_dialog_new (void);
-+
-+char * gdm_domain_chooser_dialog_get_current_domain_name (GdmDomainChooserDialog *dialog);
-+void gdm_domain_chooser_dialog_set_current_domain_name (GdmDomainChooserDialog *dialog,
-+ const char *domain_name);
-+
-+G_END_DECLS
-+
-+#endif /* __GDM_DOMAIN_CHOOSER_DIALOG_H */
-Index: gui/simple-greeter/gdm-domain-chooser-widget.c
-===================================================================
---- gui/simple-greeter/gdm-domain-chooser-widget.c (revision 0)
-+++ gui/simple-greeter/gdm-domain-chooser-widget.c (revision 0)
-@@ -0,0 +1,237 @@
-+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ *
-+ * Copyright (C) 2008 Hans Petter Jansson
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * Written by: Hans Petter Jansson
-+ */
-+
-+#include "config.h"
-+
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+
-+#include
-+
-+#include
-+#include
-+#include
-+#include
-+
-+#include "gdm-domain-chooser-widget.h"
-+#include "gdm-chooser-widget.h"
-+#include "gdm-domain-provider.h"
-+
-+#define GDM_DOMAIN_CHOOSER_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_DOMAIN_CHOOSER_WIDGET, GdmDomainChooserWidgetPrivate))
-+
-+struct GdmDomainChooserWidgetPrivate
-+{
-+ GdmDomainProvider *domain_provider;
-+};
-+
-+static void gdm_domain_chooser_widget_class_init (GdmDomainChooserWidgetClass *klass);
-+static void gdm_domain_chooser_widget_init (GdmDomainChooserWidget *domain_chooser_widget);
-+static void gdm_domain_chooser_widget_finalize (GObject *object);
-+
-+G_DEFINE_TYPE (GdmDomainChooserWidget, gdm_domain_chooser_widget, GDM_TYPE_CHOOSER_WIDGET)
-+
-+#if 0
-+
-+enum {
-+ CHOOSER_LIST_TITLE_COLUMN = 0,
-+ CHOOSER_LIST_TRANSLATED_COLUMN,
-+ CHOOSER_LIST_DOMAIN_COLUMN
-+};
-+
-+#endif
-+
-+static gchar *
-+convert_domain_name_to_display (const gchar *domain_name)
-+{
-+ gchar *utf8_name;
-+ gchar *normalized_name;
-+
-+ utf8_name = g_locale_to_utf8 (domain_name, -1, NULL, NULL, NULL);
-+ if (!utf8_name)
-+ return NULL;
-+
-+ normalized_name = g_utf8_strdown (utf8_name, -1);
-+ g_free (utf8_name);
-+
-+ return normalized_name;
-+}
-+
-+char *
-+gdm_domain_chooser_widget_get_current_domain_name (GdmDomainChooserWidget *widget)
-+{
-+ char *domain_name;
-+
-+ g_return_val_if_fail (GDM_IS_DOMAIN_CHOOSER_WIDGET (widget), NULL);
-+
-+ domain_name = gdm_chooser_widget_get_selected_item (GDM_CHOOSER_WIDGET (widget));
-+
-+ if (domain_name == NULL) {
-+ domain_name = g_strdup ("__local");
-+ }
-+
-+ return domain_name;
-+}
-+
-+void
-+gdm_domain_chooser_widget_set_current_domain_name (GdmDomainChooserWidget *widget,
-+ const char *domain_name)
-+{
-+ g_return_if_fail (GDM_IS_DOMAIN_CHOOSER_WIDGET (widget));
-+
-+ if (domain_name == NULL) {
-+ gdm_chooser_widget_set_selected_item (GDM_CHOOSER_WIDGET (widget),
-+ NULL);
-+ return;
-+ }
-+
-+ gdm_chooser_widget_set_selected_item (GDM_CHOOSER_WIDGET (widget),
-+ domain_name);
-+}
-+
-+static void
-+populate_widget (GdmDomainChooserWidget *domain_chooser_widget)
-+{
-+ GdmDomainChooserWidgetPrivate *priv = domain_chooser_widget->priv;
-+ GdmChooserWidget *chooser_widget = GDM_CHOOSER_WIDGET (domain_chooser_widget);
-+ GList *domain_list;
-+ GList *l;
-+ gchar *current_domain_name;
-+
-+ domain_list = gdm_domain_provider_peek_domains (priv->domain_provider);
-+
-+ current_domain_name = gdm_domain_chooser_widget_get_current_domain_name (domain_chooser_widget);
-+ gdm_chooser_widget_remove_all_items (chooser_widget);
-+
-+ for (l = domain_list; l; l = g_list_next (l)) {
-+ const gchar *domain_name = l->data;
-+ gchar *display_name;
-+
-+ display_name = convert_domain_name_to_display (domain_name);
-+ if (!display_name)
-+ continue;
-+
-+ gdm_chooser_widget_add_item (chooser_widget,
-+ domain_name,
-+ NULL,
-+ display_name,
-+ display_name,
-+ 0,
-+ FALSE,
-+ FALSE);
-+
-+ g_free (display_name);
-+ }
-+
-+ gdm_chooser_widget_add_item (chooser_widget,
-+ "__local",
-+ NULL,
-+ _("Local login"),
-+ _("Log in to the local computer."),
-+ 0,
-+ FALSE,
-+ TRUE);
-+
-+ gdm_domain_chooser_widget_set_current_domain_name (domain_chooser_widget, current_domain_name);
-+}
-+
-+static void
-+gdm_domain_chooser_widget_dispose (GObject *object)
-+{
-+ G_OBJECT_CLASS (gdm_domain_chooser_widget_parent_class)->dispose (object);
-+}
-+
-+static void
-+gdm_domain_chooser_widget_realize (GtkWidget *widget)
-+{
-+ GdmDomainChooserWidget *chooser;
-+
-+ chooser = GDM_DOMAIN_CHOOSER_WIDGET (widget);
-+
-+ GTK_WIDGET_CLASS (gdm_domain_chooser_widget_parent_class)->realize (widget);
-+}
-+
-+static void
-+gdm_domain_chooser_widget_class_init (GdmDomainChooserWidgetClass *klass)
-+{
-+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
-+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
-+
-+ object_class->dispose = gdm_domain_chooser_widget_dispose;
-+ object_class->finalize = gdm_domain_chooser_widget_finalize;
-+ widget_class->realize = gdm_domain_chooser_widget_realize;
-+
-+ g_type_class_add_private (klass, sizeof (GdmDomainChooserWidgetPrivate));
-+}
-+
-+static void
-+gdm_domain_chooser_widget_init (GdmDomainChooserWidget *domain_chooser_widget)
-+{
-+ GdmDomainChooserWidgetPrivate *priv;
-+
-+ priv = domain_chooser_widget->priv = GDM_DOMAIN_CHOOSER_WIDGET_GET_PRIVATE (domain_chooser_widget);
-+
-+ priv->domain_provider = gdm_get_domain_provider ();
-+ g_signal_connect_swapped (priv->domain_provider, "changed",
-+ (GCallback) populate_widget, domain_chooser_widget);
-+
-+ populate_widget (domain_chooser_widget);
-+
-+ gdm_chooser_widget_set_separator_position (GDM_CHOOSER_WIDGET (domain_chooser_widget),
-+ GDM_CHOOSER_WIDGET_POSITION_TOP);
-+}
-+
-+static void
-+gdm_domain_chooser_widget_finalize (GObject *object)
-+{
-+ GdmDomainChooserWidgetPrivate *priv;
-+ GdmDomainChooserWidget *domain_chooser_widget;
-+
-+ g_return_if_fail (object != NULL);
-+ g_return_if_fail (GDM_IS_DOMAIN_CHOOSER_WIDGET (object));
-+
-+ domain_chooser_widget = GDM_DOMAIN_CHOOSER_WIDGET (object);
-+ priv = domain_chooser_widget->priv;
-+
-+ g_return_if_fail (priv != NULL);
-+
-+ g_signal_handlers_disconnect_by_func (priv->domain_provider, populate_widget, domain_chooser_widget);
-+
-+ G_OBJECT_CLASS (gdm_domain_chooser_widget_parent_class)->finalize (object);
-+}
-+
-+GtkWidget *
-+gdm_domain_chooser_widget_new (void)
-+{
-+ GObject *object;
-+
-+ object = g_object_new (GDM_TYPE_DOMAIN_CHOOSER_WIDGET,
-+ "inactive-text", _("_Domains:"),
-+ "active-text", _("_Domain:"),
-+ NULL);
-+
-+ return GTK_WIDGET (object);
-+}
-Index: gui/simple-greeter/gdm-domain-chooser-widget.h
-===================================================================
---- gui/simple-greeter/gdm-domain-chooser-widget.h (revision 0)
-+++ gui/simple-greeter/gdm-domain-chooser-widget.h (revision 0)
-@@ -0,0 +1,59 @@
-+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ *
-+ * Copyright (C) 2008 Hans Petter Jansson
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * Written by: Hans Petter Jansson
-+ */
-+
-+#ifndef __GDM_DOMAIN_CHOOSER_WIDGET_H
-+#define __GDM_DOMAIN_CHOOSER_WIDGET_H
-+
-+#include
-+#include "gdm-chooser-widget.h"
-+
-+G_BEGIN_DECLS
-+
-+#define GDM_TYPE_DOMAIN_CHOOSER_WIDGET (gdm_domain_chooser_widget_get_type ())
-+#define GDM_DOMAIN_CHOOSER_WIDGET(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDM_TYPE_DOMAIN_CHOOSER_WIDGET, GdmDomainChooserWidget))
-+#define GDM_DOMAIN_CHOOSER_WIDGET_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GDM_TYPE_DOMAIN_CHOOSER_WIDGET, GdmDomainChooserWidgetClass))
-+#define GDM_IS_DOMAIN_CHOOSER_WIDGET(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDM_TYPE_DOMAIN_CHOOSER_WIDGET))
-+#define GDM_IS_DOMAIN_CHOOSER_WIDGET_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GDM_TYPE_DOMAIN_CHOOSER_WIDGET))
-+#define GDM_DOMAIN_CHOOSER_WIDGET_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDM_TYPE_DOMAIN_CHOOSER_WIDGET, GdmDomainChooserWidgetClass))
-+
-+typedef struct GdmDomainChooserWidgetPrivate GdmDomainChooserWidgetPrivate;
-+
-+typedef struct
-+{
-+ GdmChooserWidget parent;
-+ GdmDomainChooserWidgetPrivate *priv;
-+} GdmDomainChooserWidget;
-+
-+typedef struct
-+{
-+ GdmChooserWidgetClass parent_class;
-+} GdmDomainChooserWidgetClass;
-+
-+GType gdm_domain_chooser_widget_get_type (void);
-+GtkWidget * gdm_domain_chooser_widget_new (void);
-+
-+char * gdm_domain_chooser_widget_get_current_domain_name (GdmDomainChooserWidget *widget);
-+void gdm_domain_chooser_widget_set_current_domain_name (GdmDomainChooserWidget *widget,
-+ const char *lang_name);
-+
-+G_END_DECLS
-+
-+#endif /* __GDM_DOMAIN_CHOOSER_WIDGET_H */
-Index: gui/simple-greeter/gdm-domain-provider.c
-===================================================================
---- gui/simple-greeter/gdm-domain-provider.c (revision 0)
-+++ gui/simple-greeter/gdm-domain-provider.c (revision 0)
+diff -Nurp gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-provider.c gdm-2.24.0-post/gui/simple-greeter/gdm-domain-provider.c
+--- gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-provider.c 1969-12-31 18:00:00.000000000 -0600
++++ gdm-2.24.0-post/gui/simple-greeter/gdm-domain-provider.c 2008-10-16 14:29:40.000000000 -0500
@@ -0,0 +1,478 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
@@ -1535,10 +1541,9 @@ Index: gui/simple-greeter/gdm-domain-provider.c
+
+ return priv->domains;
+}
-Index: gui/simple-greeter/gdm-domain-provider.h
-===================================================================
---- gui/simple-greeter/gdm-domain-provider.h (revision 0)
-+++ gui/simple-greeter/gdm-domain-provider.h (revision 0)
+diff -Nurp gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-provider.h gdm-2.24.0-post/gui/simple-greeter/gdm-domain-provider.h
+--- gdm-2.24.0-pre/gui/simple-greeter/gdm-domain-provider.h 1969-12-31 18:00:00.000000000 -0600
++++ gdm-2.24.0-post/gui/simple-greeter/gdm-domain-provider.h 2008-10-16 14:29:40.000000000 -0500
@@ -0,0 +1,61 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
@@ -1601,10 +1606,9 @@ Index: gui/simple-greeter/gdm-domain-provider.h
+G_END_DECLS
+
+#endif /* __GDM_DOMAIN_PROVIDER_H */
-Index: gui/simple-greeter/gdm-greeter-panel.c
-===================================================================
---- gui/simple-greeter/gdm-greeter-panel.c (revision 6548)
-+++ gui/simple-greeter/gdm-greeter-panel.c (working copy)
+diff -Nurp gdm-2.24.0-pre/gui/simple-greeter/gdm-greeter-panel.c gdm-2.24.0-post/gui/simple-greeter/gdm-greeter-panel.c
+--- gdm-2.24.0-pre/gui/simple-greeter/gdm-greeter-panel.c 2008-08-20 23:31:47.000000000 -0500
++++ gdm-2.24.0-post/gui/simple-greeter/gdm-greeter-panel.c 2008-10-16 14:29:40.000000000 -0500
@@ -40,6 +40,7 @@
#include "gdm-language-option-widget.h"
#include "gdm-layout-option-widget.h"
@@ -1722,10 +1726,9 @@ Index: gui/simple-greeter/gdm-greeter-panel.c
+ gdm_option_widget_set_default_item (GDM_OPTION_WIDGET (panel->priv->domain_option_widget),
+ domain_name);
+}
-Index: gui/simple-greeter/gdm-greeter-panel.h
-===================================================================
---- gui/simple-greeter/gdm-greeter-panel.h (revision 6548)
-+++ gui/simple-greeter/gdm-greeter-panel.h (working copy)
+diff -Nurp gdm-2.24.0-pre/gui/simple-greeter/gdm-greeter-panel.h gdm-2.24.0-post/gui/simple-greeter/gdm-greeter-panel.h
+--- gdm-2.24.0-pre/gui/simple-greeter/gdm-greeter-panel.h 2008-08-20 23:31:47.000000000 -0500
++++ gdm-2.24.0-post/gui/simple-greeter/gdm-greeter-panel.h 2008-10-16 14:29:40.000000000 -0500
@@ -53,6 +53,9 @@ typedef struct
void (* session_selected) (GdmGreeterPanel *panel,
@@ -1745,10 +1748,9 @@ Index: gui/simple-greeter/gdm-greeter-panel.h
G_END_DECLS
#endif /* __GDM_GREETER_PANEL_H */
-Index: gui/simple-greeter/gdm-greeter-session.c
-===================================================================
---- gui/simple-greeter/gdm-greeter-session.c (revision 6548)
-+++ gui/simple-greeter/gdm-greeter-session.c (working copy)
+diff -Nurp gdm-2.24.0-pre/gui/simple-greeter/gdm-greeter-session.c gdm-2.24.0-post/gui/simple-greeter/gdm-greeter-session.c
+--- gdm-2.24.0-pre/gui/simple-greeter/gdm-greeter-session.c 2008-08-20 23:31:47.000000000 -0500
++++ gdm-2.24.0-post/gui/simple-greeter/gdm-greeter-session.c 2008-10-16 14:35:57.000000000 -0500
@@ -38,6 +38,8 @@
#include "gdm-greeter-panel.h"
#include "gdm-greeter-login-window.h"
@@ -1802,24 +1804,7 @@ Index: gui/simple-greeter/gdm-greeter-session.c
static void
on_info (GdmGreeterClient *client,
const char *text,
-@@ -140,6 +172,16 @@ on_default_session_name_changed (GdmGree
- }
-
- static void
-+on_selected_domain_changed (GdmGreeterClient *client,
-+ const char *text,
-+ GdmGreeterSession *session)
-+{
-+ g_debug ("GdmGreeterSession: selected domain changed: %s", text);
-+ gdm_greeter_panel_set_default_domain_name (GDM_GREETER_PANEL (session->priv->panel),
-+ text);
-+}
-+
-+static void
- on_timed_login_requested (GdmGreeterClient *client,
- const char *text,
- int delay,
-@@ -198,8 +240,14 @@ on_begin_verification_for_user (GdmGreet
+@@ -198,8 +230,14 @@ on_begin_verification_for_user (GdmGreet
const char *username,
GdmGreeterSession *session)
{
@@ -1835,7 +1820,7 @@ Index: gui/simple-greeter/gdm-greeter-session.c
}
static void
-@@ -236,13 +284,46 @@ on_select_layout (GdmGreeterSession
+@@ -236,13 +274,46 @@ on_select_layout (GdmGreeterSession
}
static void
@@ -1883,7 +1868,7 @@ Index: gui/simple-greeter/gdm-greeter-session.c
}
static void
-@@ -300,6 +381,11 @@ toggle_panel (GdmGreeterSession *session
+@@ -300,6 +371,11 @@ toggle_panel (GdmGreeterSession *session
G_CALLBACK (on_select_session),
session);
@@ -1895,18 +1880,7 @@ Index: gui/simple-greeter/gdm-greeter-session.c
gtk_widget_show (session->priv->panel);
} else {
gtk_widget_destroy (session->priv->panel);
-@@ -522,6 +608,10 @@ gdm_greeter_session_init (GdmGreeterSess
- G_CALLBACK (on_selected_user_changed),
- session);
- g_signal_connect (session->priv->client,
-+ "selected-domain-changed",
-+ G_CALLBACK (on_selected_domain_changed),
-+ session);
-+ g_signal_connect (session->priv->client,
- "default-language-name-changed",
- G_CALLBACK (on_default_language_name_changed),
- session);
-@@ -563,6 +653,9 @@ gdm_greeter_session_finalize (GObject *o
+@@ -563,6 +639,9 @@ gdm_greeter_session_finalize (GObject *o
g_return_if_fail (greeter_session->priv != NULL);
@@ -1916,35 +1890,31 @@ Index: gui/simple-greeter/gdm-greeter-session.c
G_OBJECT_CLASS (gdm_greeter_session_parent_class)->finalize (object);
}
-Index: gui/simple-greeter/gdm-chooser-widget.c
-===================================================================
---- gui/simple-greeter/gdm-chooser-widget.c (revision 6548)
-+++ gui/simple-greeter/gdm-chooser-widget.c (working copy)
-@@ -2105,6 +2105,20 @@ gdm_chooser_widget_remove_item (GdmChoos
- move_cursor_to_top (widget);
- }
-
-+void
-+gdm_chooser_widget_remove_all_items (GdmChooserWidget *widget)
-+{
-+ widget->priv->number_of_rows_with_images = 0;
-+ widget->priv->number_of_rows_with_status = 0;
-+ widget->priv->number_of_separated_rows = 0;
-+ widget->priv->number_of_normal_rows = 0;
-+
-+ gtk_list_store_clear (widget->priv->list_store);
-+
-+ update_separator_visibility (widget);
-+ move_cursor_to_top (widget);
-+}
-+
- gboolean
- gdm_chooser_widget_lookup_item (GdmChooserWidget *widget,
- const char *id,
-Index: gui/simple-greeter/Makefile.am
-===================================================================
---- gui/simple-greeter/Makefile.am (revision 6548)
-+++ gui/simple-greeter/Makefile.am (working copy)
+diff -Nurp gdm-2.24.0-pre/gui/simple-greeter/gdm-simple-greeter.schemas.in gdm-2.24.0-post/gui/simple-greeter/gdm-simple-greeter.schemas.in
+--- gdm-2.24.0-pre/gui/simple-greeter/gdm-simple-greeter.schemas.in 2008-08-20 23:31:47.000000000 -0500
++++ gdm-2.24.0-post/gui/simple-greeter/gdm-simple-greeter.schemas.in 2008-10-16 14:29:40.000000000 -0500
+@@ -92,6 +92,18 @@
+
+
+
++ /schemas/apps/gdm/simple-greeter/recent-domains
++ /apps/gdm/simple-greeter/recent-domains
++ gdm-simple-greeter
++ list
++ string
++ []
++
++ Recently selected domains
++ Set to a list of login domains to be shown by default at the login window.
++
++
++
+ /schemas/apps/gdm/simple-greeter/wm_use_compiz
+ /apps/gdm/simple-greeter/wm_use_compiz
+ gdm-simple-greeter
+diff -Nurp gdm-2.24.0-pre/gui/simple-greeter/Makefile.am gdm-2.24.0-post/gui/simple-greeter/Makefile.am
+--- gdm-2.24.0-pre/gui/simple-greeter/Makefile.am 2008-09-22 12:01:21.000000000 -0500
++++ gdm-2.24.0-post/gui/simple-greeter/Makefile.am 2008-10-16 14:29:40.000000000 -0500
@@ -136,6 +136,14 @@ test_greeter_panel_SOURCES = \
gdm-sessions.c \
gdm-session-option-widget.h \
@@ -1981,16 +1951,3 @@ Index: gui/simple-greeter/Makefile.am
$(NULL)
gdm_simple_greeter_LDADD = \
-Index: gui/simple-greeter/gdm-chooser-widget.h
-===================================================================
---- gui/simple-greeter/gdm-chooser-widget.h (revision 6548)
-+++ gui/simple-greeter/gdm-chooser-widget.h (working copy)
-@@ -96,6 +96,8 @@ void gdm_chooser_widget_update_i
- void gdm_chooser_widget_remove_item (GdmChooserWidget *widget,
- const char *id);
-
-+void gdm_chooser_widget_remove_all_items (GdmChooserWidget *widget);
-+
- gboolean gdm_chooser_widget_lookup_item (GdmChooserWidget *widget,
- const char *id,
- GdkPixbuf **image,
diff --git a/gdm-xauthlocalhostname.patch b/gdm-xauthlocalhostname.patch
new file mode 100644
index 0000000..1a3ff7d
--- /dev/null
+++ b/gdm-xauthlocalhostname.patch
@@ -0,0 +1,79 @@
+diff -upr gdm-2.23.92-pre/daemon/gdm-display-access-file.c gdm-2.23.92-post/daemon/gdm-display-access-file.c
+--- gdm-2.23.92-pre/daemon/gdm-display-access-file.c 2008-08-26 14:04:00.000000000 -0500
++++ gdm-2.23.92-post/daemon/gdm-display-access-file.c 2008-10-07 22:58:45.000000000 -0500
+@@ -410,7 +410,7 @@ _get_auth_info_for_display (GdmDisplayAc
+
+ if (is_local) {
+ *family = FamilyLocal;
+- *address = g_strdup (g_get_host_name ());
++ *address = g_strdup ("localhost");
+ } else {
+ *family = FamilyWild;
+ gdm_display_get_remote_hostname (display, address, NULL);
+Only in gdm-2.23.92-post/daemon: gdm-display-glue.h
+Only in gdm-2.23.92-post/daemon: gdm-factory-slave-glue.h
+Only in gdm-2.23.92-post/daemon: gdm-local-display-factory-glue.h
+Only in gdm-2.23.92-post/daemon: gdm-manager-glue.h
+Only in gdm-2.23.92-post/daemon: gdm-product-display-glue.h
+Only in gdm-2.23.92-post/daemon: gdm-product-slave-glue.h
+diff -upr gdm-2.23.92-pre/daemon/gdm-session-direct.c gdm-2.23.92-post/daemon/gdm-session-direct.c
+--- gdm-2.23.92-pre/daemon/gdm-session-direct.c 2008-08-26 14:04:00.000000000 -0500
++++ gdm-2.23.92-post/daemon/gdm-session-direct.c 2008-10-07 22:58:45.000000000 -0500
+@@ -1985,6 +1985,12 @@ setup_session_environment (GdmSessionDir
+ session->priv->user_x11_authority_file);
+ }
+
++ if (session->priv->display_is_local) {
++ gdm_session_direct_set_environment_variable (session,
++ "XAUTHLOCALHOSTNAME",
++ "localhost");
++ }
++
+ /* FIXME: We do this here and in the session worker. We should consolidate
+ * somehow.
+ */
+Only in gdm-2.23.92-post/daemon: gdm-session-direct-glue.h
+Only in gdm-2.23.92-post/daemon: gdm-simple-slave-glue.h
+diff -upr gdm-2.23.92-pre/daemon/gdm-slave.c gdm-2.23.92-post/daemon/gdm-slave.c
+--- gdm-2.23.92-pre/daemon/gdm-slave.c 2008-08-26 14:04:00.000000000 -0500
++++ gdm-2.23.92-post/daemon/gdm-slave.c 2008-10-07 22:58:45.000000000 -0500
+@@ -220,6 +220,10 @@ get_script_environment (GdmSlave *slav
+ g_hash_table_insert (hash, g_strdup ("REMOTE_HOST"), g_strdup (slave->priv->display_hostname));
+ }
+
++ if (slave->priv->display_is_local) {
++ g_hash_table_insert (hash, g_strdup ("XAUTHLOCALHOSTNAME"), g_strdup ("localhost"));
++ }
++
+ /* Runs as root */
+ g_hash_table_insert (hash, g_strdup ("XAUTHORITY"), g_strdup (slave->priv->display_x11_authority_file));
+ g_hash_table_insert (hash, g_strdup ("DISPLAY"), g_strdup (slave->priv->display_name));
+@@ -372,6 +376,7 @@ gdm_slave_connect_to_x11_display (GdmSla
+
+ g_setenv ("DISPLAY", slave->priv->display_name, TRUE);
+ g_setenv ("XAUTHORITY", slave->priv->display_x11_authority_file, TRUE);
++ g_setenv ("XAUTHLOCALHOSTNAME", "localhost", TRUE);
+
+ sigemptyset (&mask);
+ sigaddset (&mask, SIGCHLD);
+Only in gdm-2.23.92-post/daemon: gdm-slave-glue.h
+Only in gdm-2.23.92-post/daemon: gdm-static-display-glue.h
+Only in gdm-2.23.92-post/daemon: gdm-static-factory-display-glue.h
+Only in gdm-2.23.92-post/daemon: gdm-transient-display-glue.h
+diff -upr gdm-2.23.92-pre/daemon/gdm-welcome-session.c gdm-2.23.92-post/daemon/gdm-welcome-session.c
+--- gdm-2.23.92-pre/daemon/gdm-welcome-session.c 2008-09-08 17:09:05.000000000 -0500
++++ gdm-2.23.92-post/daemon/gdm-welcome-session.c 2008-10-07 22:58:45.000000000 -0500
+@@ -315,6 +315,10 @@ get_welcome_environment (GdmWelcomeSessi
+ g_hash_table_insert (hash, g_strdup ("SHELL"), g_strdup (pwent->pw_shell));
+ }
+
++ if (welcome_session->priv->x11_display_is_local) {
++ g_hash_table_remove (hash, "XAUTHLOCALHOSTNAME");
++ g_hash_table_insert (hash, g_strdup ("XAUTHLOCALHOSTNAME"), g_strdup ("localhost"));
++ }
+
+ g_hash_table_insert (hash, g_strdup ("PATH"), g_strdup (g_getenv ("PATH")));
+
+Only in gdm-2.23.92-post/daemon: gdm-xdmcp-chooser-display-glue.h
+Only in gdm-2.23.92-post/daemon: gdm-xdmcp-chooser-slave-glue.h
+Only in gdm-2.23.92-post/daemon: gdm-xdmcp-greeter-display-glue.h
diff --git a/gdm.changes b/gdm.changes
index ff22eb4..91f34df 100644
--- a/gdm.changes
+++ b/gdm.changes
@@ -1,3 +1,17 @@
+-------------------------------------------------------------------
+Thu Oct 16 14:44:40 CDT 2008 - hpj@novell.com
+
+- Update gdm-domain-logon.patch, removing some dead code and a
+ signal callback that is no longer being used.
+
+-------------------------------------------------------------------
+Thu Oct 9 15:55:32 CDT 2008 - hpj@novell.com
+
+- Replace gdm-2.23.92-host-wild.patch with
+ gdm-xauthlocalhostname.patch. The new patch sets the
+ XAUTHLOCALHOSTNAME env var instead of setting the cookie's
+ family to FamilyWild.
+
-------------------------------------------------------------------
Mon Oct 6 15:45:07 CEST 2008 - sbrabec@suse.cz
diff --git a/gdm.spec b/gdm.spec
index c8075fb..f882845 100644
--- a/gdm.spec
+++ b/gdm.spec
@@ -56,7 +56,7 @@ PreReq: %insserv_prereq
License: GPL v2 or later
Group: System/GUI/GNOME
Version: 2.24.0
-Release: 1
+Release: 2
Summary: The GNOME 2.x Display Manager
Source: %{name}-%{version}.tar.bz2
Source1: gdm.pamd
@@ -66,7 +66,7 @@ Source3: SuSEconfig.gdm
Source5: sysconfig.displaymanager-gdm
Patch1: gdm-consolekit-helper-subdir.patch
Patch2: gdm-2.21.9-no-fatal-warnings.patch
-Patch3: gdm-2.23.92-host-wild.patch
+Patch3: gdm-xauthlocalhostname.patch
Patch4: gdm-2.21.5-vt7-temporary-hack.patch
Patch5: gdm-2.23.92-gsd-path.patch
# PATCH-FIX-OPENSUSE gdm-desktop-session-env-pam.patch bnc427744 vuntz@novell.com -- Sets a PAM environment variable to let the pam gnome-keyring module know which session is started
@@ -138,7 +138,7 @@ Authors:
%patch5 -p1
%patch6 -p1
%patch7 -p1
-%patch8
+%patch8 -p1
%patch28
%patch60
@@ -246,6 +246,14 @@ fi
%files lang -f %{name}.lang
%changelog
+* Thu Oct 16 2008 hpj@novell.com
+- Update gdm-domain-logon.patch, removing some dead code and a
+ signal callback that is no longer being used.
+* Thu Oct 09 2008 hpj@novell.com
+- Replace gdm-2.23.92-host-wild.patch with
+ gdm-xauthlocalhostname.patch. The new patch sets the
+ XAUTHLOCALHOSTNAME env var instead of setting the cookie's
+ family to FamilyWild.
* Mon Oct 06 2008 sbrabec@suse.cz
- Conflict with other branding providers (FATE#304881).
* Fri Oct 03 2008 mboman@suse.de
@@ -321,7 +329,7 @@ fi
up in /usr/lib64 correctly
- Remove the empty %%post section
- Mark several files as config files.
-* Sat Aug 02 2008 hpj@suse.de
+* Fri Aug 01 2008 hpj@suse.de
- Major upgrade to GDM 2.22.0, which is pretty much a complete rewrite upstream:
+ Added gdm-consolekit-helper-subdir.patch, which lets GDM find ConsoleKit's
helper executable in the subdir where it's installed.
@@ -427,7 +435,7 @@ fi
displays.
+ Build/configure fixes for Solaris.
+ Translation updates.
-* Wed Nov 14 2007 hpj@suse.de
+* Tue Nov 13 2007 hpj@suse.de
- Removed second --with-atspi-dir from configure.
- Added gdm-tab-triggers-enter.patch, which fixes Novell bug
[#334446].
@@ -436,7 +444,7 @@ fi
(#337428)
- Updated gdm-xdm-sessions.patch to run again the /etc/X11/xdm
scripts (#304399)
-* Fri Nov 09 2007 hpj@suse.de
+* Thu Nov 08 2007 hpj@suse.de
- Pass the --with-atspi-dir= flag to configure so the
at-spi-registryd is started correctly. Fixes Novell bug #337428.
* Thu Oct 18 2007 maw@suse.de
@@ -444,7 +452,7 @@ fi
- Add abuild.patch.
* Thu Oct 11 2007 sbrabec@suse.cz
- Removed bogus dependency on mDNSResponder.
-* Mon Sep 24 2007 hpj@suse.de
+* Sun Sep 23 2007 hpj@suse.de
- Added gdm-2.20.0-wait-for-restart.patch, which fixes Novell bug
[#326281].
* Thu Sep 20 2007 banderso@suse.de
@@ -538,7 +546,7 @@ fi
- The greeter.dtd file has been updated. Now the default GDM themes
validate with this dtd. (Dave Fincher)
- Plus translation updates for a plethora of locales.
-* Fri Aug 17 2007 hpj@suse.de
+* Thu Aug 16 2007 hpj@suse.de
- Fixed missing configuration variable definition in
gdm-2.8.0.7-domain-entry.patch.
* Fri Aug 10 2007 sbrabec@suse.cz
@@ -554,7 +562,7 @@ fi
* Sat Aug 04 2007 maw@suse.de
- Use %%fdupes
- Uncomment out the rm in %%clean.
-* Sat Aug 04 2007 hpj@suse.de
+* Fri Aug 03 2007 hpj@suse.de
- Update to version 2.19.5.
- Fix up gdm-conf.patch.
- Fix up gdm-2.19.3-reset-pam.patch.
@@ -578,11 +586,11 @@ fi
* Tue Jul 24 2007 jpr@suse.de
- Add xorg-x11-server-extras for Xnest/Xephyr so that the defaults
are set correctly (not an installation dep)
-* Fri Jul 20 2007 maw@suse.de
+* Thu Jul 19 2007 maw@suse.de
- Reenable gdm-conf.patch (#292837).
* Tue Jul 17 2007 coolo@suse.de
- fix pointer arithmetic
-* Tue Jul 17 2007 mauro@suse.de
+* Mon Jul 16 2007 mauro@suse.de
- Update to version 2.19.3
- Clean up of the not applicable patches.
- Bugfixes for #448547, #448548, #443557.
@@ -626,15 +634,15 @@ fi
Fontenelle, Pema Geyleg, Priit Laes, Kjartan Maraas, Inaki Larranaga
Murgoitio, Kostas Papadimas, Ignacio Casal Quinteiro, Hendrik Richter,
Changwoo Ryu, Claudio Saavedra)
-* Sat Mar 31 2007 maw@suse.de
+* Fri Mar 30 2007 maw@suse.de
- Update to version 2.18.0
- b.g.o 415513, 417350, 415181, 409801, 409693, 406226, and 407687.
* Fri Mar 30 2007 aj@suse.de
- Add pwdutils to BuildRequires.
-* Thu Mar 22 2007 hpj@suse.de
+* Wed Mar 21 2007 hpj@suse.de
- Add gdm-2.17.7-vt-fallback.patch. This is a port of the fix for
https://bugzilla.novell.com/show_bug.cgi?id=206804
-* Wed Mar 14 2007 maw@suse.de
+* Tue Mar 13 2007 maw@suse.de
- Update to version 2.17.7
- Removeupstreamed gdm-autobuild-warning.patch,
gdm-bufferoverrun.patch
@@ -642,10 +650,10 @@ fi
[#400698], #399486, #352263, #395790, #394421.
* Fri Mar 02 2007 sbrabec@suse.cz
- Do not own /usr/share/xsessions (#229172).
-* Tue Feb 27 2007 hpj@suse.de
+* Mon Feb 26 2007 hpj@suse.de
- Added gdm-2.13.0.4-audit-login.patch, which fixes Novell bug
[#234133] (GDM cannot log authentication attempts).
-* Wed Feb 14 2007 hpj@suse.de
+* Tue Feb 13 2007 hpj@suse.de
- Add gdm-trunk-string-literal-cmp.patch. Fixes #233655.
* Mon Feb 12 2007 sbrabec@suse.cz
- Fixed reversed interpretation of
@@ -692,7 +700,7 @@ fi
* Fri Oct 27 2006 jhargadon@suse.de
- changed TryExec to be the same as Exec in gdmsetup.desktop to
resolve bug #210943
-* Tue Oct 24 2006 jhargadon@suse.de
+* Mon Oct 23 2006 jhargadon@suse.de
- mkdir /var/log/gdm (#213737)
* Thu Oct 12 2006 danw@suse.de
- Remove some dead patches. Rename a few for consistency
@@ -714,7 +722,7 @@ fi
* Tue Sep 26 2006 jhargadon@suse.de
- removed am_devperm.so from gdm.pamd and gdm-autologin.pamd
to resolve bug #206963
-* Thu Sep 21 2006 jhargadon@suse.de
+* Wed Sep 20 2006 jhargadon@suse.de
- modified SuSEconfig.gdm to reflect the name change of gdm.conf
to custom.conf. bug #206904
* Thu Sep 14 2006 jhargadon@suse.de
@@ -726,7 +734,7 @@ fi
- 341619 - No longer save "Failsafe" sessions as user's default login
* Mon Sep 04 2006 kukuk@suse.de
- Add pam_loginuid.so to gdm.pamd and gdm-autologin.pamd
-* Thu Aug 31 2006 jhargadon@suse.de
+* Wed Aug 30 2006 jhargadon@suse.de
- update to version 2.15.10
- Now gdmlogin centers cursor in the GUI to ensure that the login
window always has focus
@@ -808,21 +816,21 @@ fi
- Per-display configuration is now supported.
- Greeter themes now support real GTK+ button types, making gdmgreeter
better support a11y and allow GTK themeable buttons.
-* Sat Jun 10 2006 hpj@suse.de
+* Fri Jun 09 2006 hpj@suse.de
- Update domain entry patch to default to the currently joined
Active Directory domain if there was no stored preference. Fixes
Novell bug #167344.
-* Thu Jun 01 2006 hpj@suse.de
+* Wed May 31 2006 hpj@suse.de
- Don't let any user configure GDM from the login screen if a
theme with user list is in effect. Fixes Novell bug #180219.
-* Thu Jun 01 2006 dreveman@suse.de
+* Wed May 31 2006 dreveman@suse.de
- Fix bg patch and change gdm.conf patch so we pass -br to X
server for black root window. (bnc 179847)
* Wed May 24 2006 sbrabec@suse.cz
- Do not display Japanese string in terminal, which doesn't support
it (#168736).
- Disabled beep on start (#174786).
-* Fri May 19 2006 hpj@suse.de
+* Thu May 18 2006 hpj@suse.de
- Made GDM use the more graphically intensive, but prettier,
gdmgreeter for remote logins. Fixes Novell bug #176661.
* Tue May 16 2006 sbrabec@suse.cz
@@ -832,7 +840,7 @@ fi
* Fri May 12 2006 sbrabec@suse.cz
- Store value of PERMISSION_SECURITY by SuSEconfig in
gdm_sysconfig.conf (169639#c20).
-* Tue May 09 2006 hpj@suse.de
+* Mon May 08 2006 hpj@suse.de
- Made GDM use the "gdm" group instead of shadow. Fixes Novell bug
[#119651].
- Made use of the tab key work like pressing enter if there is no
@@ -860,7 +868,7 @@ fi
service, bug #158786.
* Sat Mar 11 2006 coolo@suse.de
- fix the only-show-in-gnome patch to patch the .desktop.in
-* Tue Mar 07 2006 federico@novell.com
+* Mon Mar 06 2006 federico@novell.com
- Fix installation of the earlygdm service; we were not calling
fillup_and_insserv with "displaymanager" for the configuration
filename.
@@ -869,9 +877,9 @@ fi
in PLUS (148468#c17).
* Tue Feb 28 2006 sbrabec@suse.cz
- Use kdelibs3-doc in BuildRequires for meinproc (#153635#c14).
-* Sat Feb 25 2006 hpj@suse.de
+* Fri Feb 24 2006 hpj@suse.de
- Add patch to fix tab keynav.
-* Sat Feb 18 2006 sreeves@suse.de
+* Fri Feb 17 2006 sreeves@suse.de
- Update .desktop file (Name, GenericName, Comment, DocPath)
* Fri Feb 17 2006 gekker@suse.de
- Fix background color in GDM, it should be black
@@ -897,10 +905,10 @@ fi
- Added patch to require root auth to halt or reboot.
* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
-* Thu Jan 19 2006 hpj@suse.de
+* Wed Jan 18 2006 hpj@suse.de
- Updated the domain logon patch with numerous new features and
cosmetic fixes.
-* Tue Jan 17 2006 hpj@suse.de
+* Mon Jan 16 2006 hpj@suse.de
- Fixed a bug in logon code that prevented domain logons from
working. Updated domain logon patch.
* Fri Jan 13 2006 schwab@suse.de
@@ -920,37 +928,37 @@ fi
- Patch from upstream b.g.o (#152906)
* Mon Oct 17 2005 gekker@suse.de
- Make gdm.conf %%config(noreplace)
-* Fri Oct 14 2005 hpj@suse.de
+* Thu Oct 13 2005 hpj@suse.de
- Updated xauthority-across-hostname-changes patch to use
XAUTHLOCALHOSTNAME environment variable.
-* Fri Oct 14 2005 gekker@suse.de
+* Thu Oct 13 2005 gekker@suse.de
- Update to version 2.8.0.5
-* Wed Oct 05 2005 gekker@suse.de
+* Tue Oct 04 2005 gekker@suse.de
- Rediff patch for background colors
* Tue Oct 04 2005 gekker@suse.de
- Fix background colors to be consistent on startup
* Tue Sep 20 2005 sbrabec@suse.cz
- Removed references to build directory in installed .la files.
-* Fri Sep 16 2005 gekker@suse.de
+* Thu Sep 15 2005 gekker@suse.de
- Make Industrial the default Gtk+ theme (114173)
* Tue Sep 06 2005 sbrabec@suse.cz
- Updated to version 2.8.0.4.
-* Tue Aug 23 2005 gekker@suse.de
+* Mon Aug 22 2005 gekker@suse.de
- Update to version 2.8.0.3
- Remove upstreamed autologin patch
- Now installs .desktop files in correct location no need to move
-* Sat Aug 20 2005 hpj@suse.de
+* Fri Aug 19 2005 hpj@suse.de
- Make the default session option work on autologin; we now get GNOME.
* Tue Aug 16 2005 sbrabec@suse.cz
- Use gnome-screensaver instead of xscreensaver.
-* Sat Aug 13 2005 hpj@suse.de
+* Fri Aug 12 2005 hpj@suse.de
- Made gdm-autologin.pam not require a password.
* Fri Aug 12 2005 jpr@suse.de
- require xorg-x11-xnest for the gdmflexiserver -n option
-* Fri Aug 12 2005 gekker@suse.de
+* Thu Aug 11 2005 gekker@suse.de
- Update to version 2.8.0.2
- Make 64bit clean
-* Sun Jul 31 2005 jpr@suse.de
+* Sat Jul 30 2005 jpr@suse.de
- turn on compatibility symlink for all products
* Tue Jul 05 2005 gekker@suse.de
- Update to version 2.8.0.1
@@ -984,7 +992,7 @@ fi
* Fri Feb 11 2005 sbrabec@suse.cz
- Resource only /usr/share/xsessions for session desktop files.
- Fixed tcp_wrappers support on bi-arch.
-* Fri Feb 11 2005 gekker@suse.de
+* Thu Feb 10 2005 gekker@suse.de
- Update to version 2.6.0.7
* Wed Feb 09 2005 sbrabec@suse.cz
- Cleaned-up configuration and patches.
@@ -999,7 +1007,7 @@ fi
- add X-KDE-RootOnly to gdmsetup.desktop (#45807)
* Mon Nov 15 2004 kukuk@suse.de
- Use common-* PAM config files for gdm and gdm-autologin
-* Wed Oct 27 2004 mmj@suse.de
+* Tue Oct 26 2004 mmj@suse.de
- Locale rename no to nb
* Fri Oct 15 2004 sbrabec@suse.cz
- Implemented sysconfig displaymanager support.
@@ -1008,7 +1016,7 @@ fi
the industrial theme (#44330)
* Wed Aug 25 2004 clahey@suse.de
- Cache gdm help and show gdm in khelpcenter.
-* Tue Aug 17 2004 ro@suse.de
+* Mon Aug 16 2004 ro@suse.de
- fixed specfile
* Mon Aug 16 2004 shprasad@suse.de
- Fixes bug #60020
@@ -1022,10 +1030,10 @@ fi
time of login.
(In the spec file, the diff file, gdm-session-startkde.diff, is
applied at the %%install section)
-* Thu Jun 24 2004 dave@suse.de
+* Wed Jun 23 2004 dave@suse.de
- Added gdm-presession-kde-path.patch, adds /opt/kde3/bin to the
gdm path
-* Sat Jun 12 2004 clahey@suse.de
+* Fri Jun 11 2004 clahey@suse.de
- Added gdm-support-gdmctl.patch.
* Wed Jun 02 2004 mibarra@suse.de
- Fixed gdm.conf to use the correct group
@@ -1039,7 +1047,7 @@ fi
- honor xdm scripts (#37852)
* Tue Mar 23 2004 sbrabec@suse.cz
- Non-UTF-8 locales removed from language menu.
-* Tue Mar 23 2004 hhetter@suse.de
+* Mon Mar 22 2004 hhetter@suse.de
- remove SuSEconfig.gdm; it's no longer needed to manage
the available sessions for gdm, as it is now using desktop
files to define it's sessions (#36267)
@@ -1075,7 +1083,7 @@ fi
- updated to version 2.4.1.6
* Mon Jul 28 2003 kukuk@suse.de
- Make sure /var/lib/gdm has correct permissions
-* Fri Jul 25 2003 hhetter@suse.de
+* Thu Jul 24 2003 hhetter@suse.de
- move capplets to correct position
- fix build
* Wed Jul 16 2003 sbrabec@suse.cz
@@ -1088,7 +1096,7 @@ fi
- Updated neededforbuild.
- Use %%find_lang.
- Prefix clash fix (capplets).
-* Wed May 28 2003 ro@suse.de
+* Tue May 27 2003 ro@suse.de
- remove unpackaged files from buildroot
* Mon May 26 2003 sbrabec@suse.cz
- Re-enabled UTF-8 alternatives for all locales.
@@ -1112,7 +1120,7 @@ fi
- updated to 2.4.1.3 [GNOME 2.2.0]
* Fri Feb 07 2003 kukuk@suse.de
- Use pam_unix2.so instead of pam_unix.so
-* Thu Jan 16 2003 ro@suse.de
+* Wed Jan 15 2003 ro@suse.de
- use gtk2-devel-packages and libjpeg in neededforbuild
* Tue Jan 07 2003 sbrabec@suse.cz
- Update to version 2.4.1.0.
@@ -1125,7 +1133,7 @@ fi
- Removed sox from neededforbuild.
* Thu Nov 28 2002 hhetter@suse.de
- updated to version 2.4.0.12 [GNOME 2.0.3]
-* Tue Nov 12 2002 ro@suse.de
+* Mon Nov 11 2002 ro@suse.de
- changed neededforbuild to
* Sun Nov 03 2002 mfabian@suse.de
- Bug Id #21407: correct wrong spelling of UTF-8 locale names