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