OBS User unknown 2009-08-04 07:55:25 +00:00 committed by Git OBS Bridge
parent 9e96d6be53
commit 63c324c1df
12 changed files with 116 additions and 1839 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:34abc69bdfd1b6bb6d1f64dd1e34652c61310dc69305712d7aeec6203678fa4c
size 2526832

3
gdm-2.27.4.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:17507e91bbea0c34ceb5eca28d25affa7c47069c93601fa83c0fda653d391f67
size 2505492

View File

@ -1,55 +0,0 @@
Index: gdm-2.24.0/daemon/gdm-session-direct.c
===================================================================
--- gdm-2.24.0.orig/daemon/gdm-session-direct.c
+++ gdm-2.24.0/daemon/gdm-session-direct.c
@@ -442,6 +442,7 @@ gdm_session_direct_handle_accreditation_
DBusError error;
const char *text;
+ text = NULL;
dbus_error_init (&error);
if (! dbus_message_get_args (message, &error,
DBUS_TYPE_STRING, &text,
@@ -455,7 +456,7 @@ gdm_session_direct_handle_accreditation_
g_debug ("GdmSessionDirect: Emitting 'accreditation-failed' signal");
- _gdm_session_accreditation_failed (GDM_SESSION (session), NULL);
+ _gdm_session_accreditation_failed (GDM_SESSION (session), text);
return DBUS_HANDLER_RESULT_HANDLED;
}
Index: gdm-2.24.0/daemon/gdm-simple-slave.c
===================================================================
--- gdm-2.24.0.orig/daemon/gdm-simple-slave.c
+++ gdm-2.24.0/daemon/gdm-simple-slave.c
@@ -422,8 +422,15 @@ on_session_accreditation_failed (GdmSess
accreditation fails */
if (! migrated) {
if (slave->priv->greeter_server != NULL) {
+ char *problem;
+ if (message) {
+ problem = g_strdup_printf (_("Unable to establish credentials: %s"), message);
+ } else {
+ problem = g_strdup (_("Unable to establish credentials"));
+ }
gdm_greeter_server_problem (slave->priv->greeter_server,
- _("Unable establish credentials"));
+ problem);
+ g_free (problem);
}
}
Index: gdm-2.24.0/daemon/gdm-session-worker.c
===================================================================
--- gdm-2.24.0.orig/daemon/gdm-session-worker.c
+++ gdm-2.24.0/daemon/gdm-session-worker.c
@@ -2414,7 +2414,7 @@ on_setup (GdmSessionWorker *worker,
worker->priv->hostname = g_strdup (hostname);
worker->priv->username = NULL;
- g_debug ("GdmSessionWorker: queing setup: %s %s", service, console);
+ g_debug ("GdmSessionWorker: queuing setup: %s %s", service, console);
queue_state_change (worker);
} else {
g_warning ("Unable to get arguments: %s", error.message);

View File

@ -1,30 +0,0 @@
--- gdm-2.24.0.orig/data/gdm.conf.in 2009-02-09 13:35:31.000000000 +0100
+++ gdm-2.24.0.orig/data/gdm.conf.in 2009-02-09 13:35:18.000000000 +0100
@@ -21,6 +21,9 @@
send_interface="org.gnome.DisplayManager.Session"/>
<allow send_destination="org.gnome.DisplayManager"
send_interface="org.gnome.DBus.Properties" />
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.freedesktop.DBus.Introspectable"/>
+
</policy>
<policy context="default">
@@ -38,6 +41,8 @@
send_interface="org.gnome.DisplayManager.Session"/>
<deny send_destination="org.gnome.DisplayManager"
send_interface="org.gnome.DBus.Properties" />
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.freedesktop.DBus.Introspectable"/>
<allow send_destination="org.gnome.DisplayManager"
send_interface="org.gnome.DisplayManager.Display"
@@ -79,6 +84,8 @@
send_interface="org.gnome.DisplayManager.Settings"/>
<allow send_destination="org.gnome.DisplayManager"
send_interface="org.gnome.DBus.Properties" />
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.freedesktop.DBus.Introspectable"/>
</policy>
</busconfig>

View File

@ -1,22 +0,0 @@
Index: gdm-2.24.0/gui/simple-greeter/gdm-languages.c
===================================================================
--- gdm-2.24.0.orig/gui/simple-greeter/gdm-languages.c
+++ gdm-2.24.0/gui/simple-greeter/gdm-languages.c
@@ -482,7 +482,7 @@ select_dirs (const struct dirent *dirent
struct stat st;
char *path;
- path = g_build_filename (GNOMELOCALEDIR, dirent->d_name, NULL);
+ path = g_build_filename (LIBLOCALEDIR, dirent->d_name, NULL);
if (g_stat (path, &st) == 0) {
mode = st.st_mode;
}
@@ -502,7 +502,7 @@ collect_locales_from_directory (void)
int ndirents;
int cnt;
- ndirents = scandir (GNOMELOCALEDIR, &dirents, select_dirs, alphasort);
+ ndirents = scandir (LIBLOCALEDIR, &dirents, select_dirs, alphasort);
for (cnt = 0; cnt < ndirents; ++cnt) {
add_locale (dirents[cnt]->d_name);

View File

@ -1,398 +0,0 @@
Index: gui/simple-greeter/gdm-user-chooser-widget.c
===================================================================
--- gui/simple-greeter/gdm-user-chooser-widget.c (révision 6670)
+++ gui/simple-greeter/gdm-user-chooser-widget.c (copie de travail)
@@ -67,6 +67,8 @@ struct GdmUserChooserWidgetPrivate
guint show_user_auto : 1;
guint show_normal_users : 1;
+ guint real_show_user_other : 1;
+
guint load_idle_id;
};
@@ -83,6 +85,9 @@ static void gdm_user_chooser_widget_
G_DEFINE_TYPE (GdmUserChooserWidget, gdm_user_chooser_widget, GDM_TYPE_CHOOSER_WIDGET)
+static void add_user_other (GdmUserChooserWidget *widget);
+static void remove_user_other (GdmUserChooserWidget *widget);
+
static int
get_font_height_for_widget (GtkWidget *widget)
{
@@ -123,8 +128,31 @@ get_icon_height_for_widget (GtkWidget *w
}
static void
+update_other_user_visibility (GdmUserChooserWidget *widget)
+{
+ if (!widget->priv->show_user_other) {
+ if (widget->priv->real_show_user_other) {
+ remove_user_other (widget);
+ }
+
+ return;
+ }
+
+ if (gdm_chooser_widget_get_number_of_items (GDM_CHOOSER_WIDGET (widget)) == 1) {
+ /* we hide the Other user if it's the last one, and we show it
+ * if there's another user */
+ if (widget->priv->real_show_user_other) {
+ remove_user_other (widget);
+ } else {
+ add_user_other (widget);
+ }
+ }
+}
+
+static void
add_user_other (GdmUserChooserWidget *widget)
{
+ widget->priv->real_show_user_other = TRUE;
gdm_chooser_widget_add_item (GDM_CHOOSER_WIDGET (widget),
GDM_USER_CHOOSER_USER_OTHER,
NULL,
@@ -146,6 +174,7 @@ add_user_guest (GdmUserChooserWidget *wi
0,
FALSE,
TRUE);
+ update_other_user_visibility (widget);
}
static void
@@ -159,11 +188,13 @@ add_user_auto (GdmUserChooserWidget *wid
0,
FALSE,
TRUE);
+ update_other_user_visibility (widget);
}
static void
remove_user_other (GdmUserChooserWidget *widget)
{
+ widget->priv->real_show_user_other = FALSE;
gdm_chooser_widget_remove_item (GDM_CHOOSER_WIDGET (widget),
GDM_USER_CHOOSER_USER_OTHER);
}
@@ -173,6 +204,7 @@ remove_user_guest (GdmUserChooserWidget
{
gdm_chooser_widget_remove_item (GDM_CHOOSER_WIDGET (widget),
GDM_USER_CHOOSER_USER_GUEST);
+ update_other_user_visibility (widget);
}
static void
@@ -180,6 +212,7 @@ remove_user_auto (GdmUserChooserWidget *
{
gdm_chooser_widget_remove_item (GDM_CHOOSER_WIDGET (widget),
GDM_USER_CHOOSER_USER_AUTO);
+ update_other_user_visibility (widget);
}
void
@@ -190,11 +223,7 @@ gdm_user_chooser_widget_set_show_user_ot
if (widget->priv->show_user_other != show_user) {
widget->priv->show_user_other = show_user;
- if (show_user) {
- add_user_other (widget);
- } else {
- remove_user_other (widget);
- }
+ update_other_user_visibility (widget);
}
}
@@ -369,6 +398,8 @@ add_user (GdmUserChooserWidget *widget,
if (pixbuf != NULL) {
g_object_unref (pixbuf);
}
+
+ update_other_user_visibility (widget);
}
static void
@@ -400,6 +431,8 @@ on_user_removed (GdmUserManager *m
gdm_chooser_widget_remove_item (GDM_CHOOSER_WIDGET (widget),
user_name);
+
+ update_other_user_visibility (widget);
}
static void
@@ -444,8 +477,6 @@ on_users_loaded (GdmUserManager *m
{
GSList *users;
- widget->priv->loaded = TRUE;
-
g_debug ("GdmUserChooserWidget: Users loaded");
users = gdm_user_manager_list_users (manager);
@@ -454,7 +485,7 @@ on_users_loaded (GdmUserManager *m
users = g_slist_delete_link (users, users);
}
- gtk_widget_grab_focus (GTK_WIDGET (widget));
+ widget->priv->loaded = TRUE;
gdm_chooser_widget_loaded (GDM_CHOOSER_WIDGET (widget));
}
@@ -505,6 +536,7 @@ gdm_user_chooser_widget_constructor (GTy
n_construct_properties,
construct_properties));
+ widget->priv->real_show_user_other = FALSE;
widget->priv->show_normal_users = !is_user_list_disabled (widget);
widget->priv->load_idle_id = g_idle_add ((GSourceFunc)load_users, widget);
Index: gui/simple-greeter/gdm-greeter-login-window.c
===================================================================
--- gui/simple-greeter/gdm-greeter-login-window.c (révision 6670)
+++ gui/simple-greeter/gdm-greeter-login-window.c (copie de travail)
@@ -114,6 +114,7 @@ struct GdmGreeterLoginWindowPrivate
GtkWidget *auth_banner_label;
guint display_is_local : 1;
guint is_interactive : 1;
+ guint user_chooser_loaded : 1;
GConfClient *client;
gboolean banner_message_enabled;
@@ -528,9 +529,13 @@ switch_mode (GdmGreeterLoginWindow *logi
GtkWidget *box;
gboolean show_restart_buttons;
gboolean show_suspend_button;
+ gboolean only_other_user;
+ gboolean show_buttons;
- show_restart_buttons = get_show_restart_buttons (login_window);
- show_suspend_button = can_suspend (login_window);
+ only_other_user = (gdm_chooser_widget_get_number_of_items (GDM_CHOOSER_WIDGET (login_window->priv->user_chooser)) == 0);
+ show_buttons = (number == MODE_SELECTION) || only_other_user;
+ show_restart_buttons = show_buttons && get_show_restart_buttons (login_window);
+ show_suspend_button = show_buttons && can_suspend (login_window);
/* we want to run this even if we're supposed to
be in the mode already so that we reset everything
@@ -539,7 +544,14 @@ switch_mode (GdmGreeterLoginWindow *logi
default_name = NULL;
- remove_sensitize_power_buttons_timeout (login_window);
+ show_widget (login_window, "shutdown-button",
+ login_window->priv->display_is_local && show_restart_buttons);
+ show_widget (login_window, "restart-button",
+ login_window->priv->display_is_local && show_restart_buttons);
+ show_widget (login_window, "suspend-button",
+ login_window->priv->display_is_local && show_restart_buttons && show_suspend_button);
+ show_widget (login_window, "disconnect-button",
+ !login_window->priv->display_is_local && show_buttons);
switch (number) {
case MODE_SELECTION:
@@ -547,15 +559,6 @@ switch_mode (GdmGreeterLoginWindow *logi
show_widget (login_window, "cancel-button", FALSE);
- show_widget (login_window, "shutdown-button",
- login_window->priv->display_is_local && show_restart_buttons);
- show_widget (login_window, "restart-button",
- login_window->priv->display_is_local && show_restart_buttons);
- show_widget (login_window, "suspend-button",
- login_window->priv->display_is_local && show_restart_buttons && show_suspend_button);
- show_widget (login_window, "disconnect-button",
- ! login_window->priv->display_is_local);
-
show_widget (login_window, "auth-input-box", FALSE);
add_sensitize_power_buttons_timeout (login_window);
@@ -568,10 +571,12 @@ switch_mode (GdmGreeterLoginWindow *logi
break;
case MODE_AUTHENTICATION:
show_widget (login_window, "cancel-button", TRUE);
- show_widget (login_window, "shutdown-button", FALSE);
- show_widget (login_window, "restart-button", FALSE);
- show_widget (login_window, "suspend-button", FALSE);
- show_widget (login_window, "disconnect-button", FALSE);
+
+ sensitize_widget (login_window, "shutdown-button", TRUE);
+ sensitize_widget (login_window, "restart-button", TRUE);
+ sensitize_widget (login_window, "suspend-button", TRUE);
+ sensitize_widget (login_window, "disconnect-button", TRUE);
+
default_name = "log-in-button";
break;
default:
@@ -665,10 +670,40 @@ delete_entry_text (GtkWidget *entry)
}
static void
+select_user (GdmGreeterLoginWindow *login_window,
+ const char *user_name)
+{
+ g_signal_emit (G_OBJECT (login_window), signals[USER_SELECTED],
+ 0, user_name);
+
+ if (strcmp (user_name, GDM_USER_CHOOSER_USER_OTHER) == 0) {
+ g_signal_emit (login_window, signals[BEGIN_VERIFICATION], 0);
+ } else if (strcmp (user_name, GDM_USER_CHOOSER_USER_GUEST) == 0) {
+ /* FIXME: handle guest account stuff */
+ } else if (strcmp (user_name, GDM_USER_CHOOSER_USER_AUTO) == 0) {
+ g_signal_emit (login_window, signals[BEGIN_AUTO_LOGIN], 0,
+ login_window->priv->timed_login_username);
+
+ login_window->priv->timed_login_enabled = TRUE;
+ restart_timed_login_timeout (login_window);
+
+ /* just wait for the user to select language and stuff */
+ set_log_in_button_mode (login_window, LOGIN_BUTTON_TIMED_LOGIN);
+ set_message (login_window, _("Select language and click Log In"));
+ } else {
+ g_signal_emit (login_window, signals[BEGIN_VERIFICATION_FOR_USER], 0, user_name);
+ }
+
+ switch_mode (login_window, MODE_AUTHENTICATION);
+}
+
+
+static void
reset_dialog (GdmGreeterLoginWindow *login_window)
{
GtkWidget *entry;
GtkWidget *label;
+ gboolean use_selection;
g_debug ("GdmGreeterLoginWindow: Resetting dialog");
set_busy (login_window);
@@ -703,12 +738,21 @@ reset_dialog (GdmGreeterLoginWindow *log
label = glade_xml_get_widget (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->xml, "auth-prompt-label");
gtk_label_set_text (GTK_LABEL (label), "");
- switch_mode (login_window, MODE_SELECTION);
+ use_selection = !login_window->priv->user_chooser_loaded || (gdm_chooser_widget_get_number_of_items (GDM_CHOOSER_WIDGET (login_window->priv->user_chooser)) >= 1);
+
+ if (use_selection) {
+ switch_mode (login_window, MODE_SELECTION);
+ } else {
+ select_user (login_window, GDM_USER_CHOOSER_USER_OTHER);
+ }
set_sensitive (login_window, TRUE);
set_ready (login_window);
set_focus (GDM_GREETER_LOGIN_WINDOW (login_window));
- gdm_chooser_widget_propagate_pending_key_events (GDM_CHOOSER_WIDGET (login_window->priv->user_chooser));
+
+ if (use_selection) {
+ gdm_chooser_widget_propagate_pending_key_events (GDM_CHOOSER_WIDGET (login_window->priv->user_chooser));
+ }
}
static void
@@ -1323,7 +1367,19 @@ static void
on_users_loaded (GdmUserChooserWidget *user_chooser,
GdmGreeterLoginWindow *login_window)
{
- gdm_chooser_widget_activate_if_one_item (GDM_CHOOSER_WIDGET (login_window->priv->user_chooser));
+ int number_users;
+
+ login_window->priv->user_chooser_loaded = TRUE;
+
+ number_users = gdm_chooser_widget_get_number_of_items (GDM_CHOOSER_WIDGET (user_chooser));
+
+ if (number_users == 1) {
+ gdm_chooser_widget_activate_if_one_item (GDM_CHOOSER_WIDGET (user_chooser));
+ } else if (number_users == 0) {
+ select_user (login_window, GDM_USER_CHOOSER_USER_OTHER);
+ }
+
+ set_focus (GDM_GREETER_LOGIN_WINDOW (login_window));
}
static void
@@ -1339,28 +1395,7 @@ on_user_chosen (GdmUserChooserWidget *u
return;
}
- g_signal_emit (G_OBJECT (login_window), signals[USER_SELECTED],
- 0, user_name);
-
- if (strcmp (user_name, GDM_USER_CHOOSER_USER_OTHER) == 0) {
- g_signal_emit (login_window, signals[BEGIN_VERIFICATION], 0);
- } else if (strcmp (user_name, GDM_USER_CHOOSER_USER_GUEST) == 0) {
- /* FIXME: handle guest account stuff */
- } else if (strcmp (user_name, GDM_USER_CHOOSER_USER_AUTO) == 0) {
- g_signal_emit (login_window, signals[BEGIN_AUTO_LOGIN], 0,
- login_window->priv->timed_login_username);
-
- login_window->priv->timed_login_enabled = TRUE;
- restart_timed_login_timeout (login_window);
-
- /* just wait for the user to select language and stuff */
- set_log_in_button_mode (login_window, LOGIN_BUTTON_TIMED_LOGIN);
- set_message (login_window, _("Select language and click Log In"));
- } else {
- g_signal_emit (login_window, signals[BEGIN_VERIFICATION_FOR_USER], 0, user_name);
- }
-
- switch_mode (login_window, MODE_AUTHENTICATION);
+ select_user (login_window, user_name);
g_free (user_name);
}
@@ -1914,6 +1949,7 @@ gdm_greeter_login_window_init (GdmGreete
login_window->priv = GDM_GREETER_LOGIN_WINDOW_GET_PRIVATE (login_window);
+ login_window->priv->user_chooser_loaded = FALSE;
login_window->priv->timed_login_enabled = FALSE;
login_window->priv->dialog_mode = MODE_SELECTION;
Index: gui/simple-greeter/gdm-chooser-widget.c
===================================================================
--- gui/simple-greeter/gdm-chooser-widget.c (révision 6670)
+++ gui/simple-greeter/gdm-chooser-widget.c (copie de travail)
@@ -593,6 +593,16 @@ update_separator_visibility (GdmChooserW
}
static void
+update_chooser_visibility (GdmChooserWidget *widget)
+{
+ if (gdm_chooser_widget_get_number_of_items (widget) > 0) {
+ gtk_widget_show (widget->priv->scrollable_widget);
+ } else {
+ gtk_widget_hide (widget->priv->scrollable_widget);
+ }
+}
+
+static void
set_inactive_items_visible (GdmChooserWidget *widget,
gboolean should_show)
{
@@ -1771,7 +1781,6 @@ gdm_chooser_widget_init (GdmChooserWidge
add_frame (widget);
widget->priv->scrollable_widget = gdm_scrollable_widget_new ();
- gtk_widget_show (widget->priv->scrollable_widget);
gtk_container_add (GTK_CONTAINER (widget->priv->frame_alignment),
widget->priv->scrollable_widget);
@@ -2055,6 +2064,8 @@ gdm_chooser_widget_add_item (GdmChooserW
-1);
move_cursor_to_top (widget);
+
+ update_chooser_visibility (widget);
}
void
@@ -2103,6 +2114,8 @@ gdm_chooser_widget_remove_item (GdmChoos
gtk_list_store_remove (widget->priv->list_store, &iter);
move_cursor_to_top (widget);
+
+ update_chooser_visibility (widget);
}
gboolean

View File

@ -1,7 +1,7 @@
diff -up gdm-2.25.2/configure.ac.system-keyboard gdm-2.25.2/configure.ac
--- gdm-2.25.2/configure.ac.system-keyboard 2009-02-24 22:51:00.058815966 -0500
+++ gdm-2.25.2/configure.ac 2009-02-24 22:51:00.154816109 -0500
@@ -69,6 +69,7 @@ AC_SUBST(COMMON_LIBS)
diff -ur gdm-2.27.4/configure.ac gdm-2.27.4.patched//configure.ac
--- gdm-2.27.4/configure.ac 2009-07-20 04:17:17.000000000 +0200
+++ gdm-2.27.4.patched//configure.ac 2009-07-20 17:50:13.000000000 +0200
@@ -68,6 +68,7 @@
PKG_CHECK_MODULES(DAEMON,
dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
gobject-2.0 >= $GLIB_REQUIRED_VERSION
@ -9,9 +9,9 @@ diff -up gdm-2.25.2/configure.ac.system-keyboard gdm-2.25.2/configure.ac
)
AC_SUBST(DAEMON_CFLAGS)
AC_SUBST(DAEMON_LIBS)
diff -up gdm-2.25.2/daemon/gdm-session-direct.c.system-keyboard gdm-2.25.2/daemon/gdm-session-direct.c
--- gdm-2.25.2/daemon/gdm-session-direct.c.system-keyboard 2008-08-26 15:04:00.000000000 -0400
+++ gdm-2.25.2/daemon/gdm-session-direct.c 2009-02-24 22:55:02.656566009 -0500
diff -ur gdm-2.27.4/daemon/gdm-session-direct.c gdm-2.27.4.patched//daemon/gdm-session-direct.c
--- gdm-2.27.4/daemon/gdm-session-direct.c 2009-07-20 03:09:09.000000000 +0200
+++ gdm-2.27.4.patched//daemon/gdm-session-direct.c 2009-07-20 17:53:04.000000000 +0200
@@ -45,6 +45,8 @@
#include <dbus/dbus-glib.h>
#include <dbus/dbus-glib-lowlevel.h>
@ -21,7 +21,7 @@ diff -up gdm-2.25.2/daemon/gdm-session-direct.c.system-keyboard gdm-2.25.2/daemo
#include "gdm-session-direct.h"
#include "gdm-session.h"
#include "gdm-session-private.h"
@@ -595,14 +597,66 @@ get_default_language_name (GdmSessionDir
@@ -597,14 +599,66 @@
return setlocale (LC_MESSAGES, NULL);
}
@ -91,24 +91,24 @@ diff -up gdm-2.25.2/daemon/gdm-session-direct.c.system-keyboard gdm-2.25.2/daemo
}
static char *
@@ -1971,9 +2025,10 @@ setup_session_environment (GdmSessionDir
"GDM_LANG",
get_language_name (session));
@@ -1955,9 +2009,10 @@
- gdm_session_direct_set_environment_variable (session,
- "GDM_KEYBOARD_LAYOUT",
- get_layout_name (session));
+ if (g_strcmp0 (get_layout_name (session), get_system_default_layout (session)) != 0)
+ gdm_session_direct_set_environment_variable (session,
+ "GDM_KEYBOARD_LAYOUT",
+ get_layout_name (session));
if (strcmp (get_layout_name (session),
get_default_layout_name (session)) == 0) {
- gdm_session_direct_set_environment_variable (session,
- "GDM_KEYBOARD_LAYOUT",
- get_layout_name (session));
+ if (g_strcmp0 (get_layout_name (session), get_system_default_layout (session)) != 0)
+ gdm_session_direct_set_environment_variable (session,
+ "GDM_KEYBOARD_LAYOUT",
+ get_layout_name (session));
}
gdm_session_direct_set_environment_variable (session,
"DISPLAY",
diff -up gdm-2.25.2/daemon/gdm-session-settings.c.system-keyboard gdm-2.25.2/daemon/gdm-session-settings.c
--- gdm-2.25.2/daemon/gdm-session-settings.c.system-keyboard 2008-08-26 15:04:00.000000000 -0400
+++ gdm-2.25.2/daemon/gdm-session-settings.c 2009-02-24 22:51:00.158815919 -0500
@@ -149,8 +149,7 @@ gdm_session_settings_set_layout_name (Gd
diff -ur gdm-2.27.4/daemon/gdm-session-settings.c gdm-2.27.4.patched//daemon/gdm-session-settings.c
--- gdm-2.27.4/daemon/gdm-session-settings.c 2009-05-19 17:18:12.000000000 +0200
+++ gdm-2.27.4.patched//daemon/gdm-session-settings.c 2009-07-20 17:50:13.000000000 +0200
@@ -149,8 +149,7 @@
{
g_return_if_fail (GDM_IS_SESSION_SETTINGS (settings));
@ -118,4 +118,3 @@ diff -up gdm-2.25.2/daemon/gdm-session-settings.c.system-keyboard gdm-2.25.2/dae
settings->priv->layout_name = g_strdup (layout_name);
g_object_notify (G_OBJECT (settings), "layout-name");
}

View File

@ -1,90 +0,0 @@
diff --git a/gui/simple-greeter/gdm-greeter-panel.c b/gui/simple-greeter/gdm-greeter-panel.c
index 6aded10..a5bf2c8 100644
--- a/gui/simple-greeter/gdm-greeter-panel.c
+++ b/gui/simple-greeter/gdm-greeter-panel.c
@@ -724,6 +724,20 @@ gdm_greeter_panel_set_default_layout_name (GdmGreeterPanel *panel,
g_return_if_fail (GDM_IS_GREETER_PANEL (panel));
if (layout_name != NULL &&
+ !gdm_layout_is_valid (layout_name)) {
+ const char *init_layout;
+
+ init_layout = gdm_layout_get_init_layout ();
+
+ g_debug ("GdmGreeterPanel: default layout %s is invalid, resetting to: %s",
+ layout_name, init_layout ? init_layout : "null");
+
+ g_signal_emit (panel, signals[LAYOUT_SELECTED], 0, init_layout);
+
+ layout_name = init_layout;
+ }
+
+ if (layout_name != NULL &&
!gdm_option_widget_lookup_item (GDM_OPTION_WIDGET (panel->priv->layout_option_widget),
layout_name, NULL, NULL, NULL)) {
gdm_recent_option_widget_add_item (GDM_RECENT_OPTION_WIDGET (panel->priv->layout_option_widget),
diff --git a/gui/simple-greeter/gdm-layouts.c b/gui/simple-greeter/gdm-layouts.c
index dc35094..59f6706 100644
--- a/gui/simple-greeter/gdm-layouts.c
+++ b/gui/simple-greeter/gdm-layouts.c
@@ -189,6 +189,41 @@ gdm_get_all_layout_names (void)
#endif
}
+gboolean
+gdm_layout_is_valid (const char *layout)
+{
+#ifdef HAVE_LIBXKLAVIER
+ XklConfigItem *item;
+ gboolean retval;
+
+ item = xkl_config_item_new ();
+ g_snprintf (item->name, XKL_MAX_CI_NAME_LENGTH, "%s", layout);
+
+ retval = xkl_config_registry_find_layout (config_registry, item);
+
+ g_object_unref (item);
+
+ return retval;
+#else
+ return TRUE;
+#endif
+}
+
+const char *
+gdm_layout_get_init_layout (void)
+{
+#ifdef HAVE_LIBXKLAVIER
+ init_xkl ();
+
+ if (initial_config->layouts)
+ return initial_config->layouts[0];
+ else
+ return NULL;
+#else
+ return NULL;
+#endif
+}
+
void
gdm_layout_activate (const char *layout)
{
diff --git a/gui/simple-greeter/gdm-layouts.h b/gui/simple-greeter/gdm-layouts.h
index a87b620..bf1afba 100644
--- a/gui/simple-greeter/gdm-layouts.h
+++ b/gui/simple-greeter/gdm-layouts.h
@@ -24,9 +24,11 @@
G_BEGIN_DECLS
-char * gdm_get_layout_from_name (const char *name);
-char ** gdm_get_all_layout_names (void);
-void gdm_layout_activate (const char *layout);
+char * gdm_get_layout_from_name (const char *name);
+char ** gdm_get_all_layout_names (void);
+gboolean gdm_layout_is_valid (const char *layout);
+const char * gdm_layout_get_init_layout (void);
+void gdm_layout_activate (const char *layout);
G_END_DECLS

View File

@ -1,28 +0,0 @@
Index: gdm-2.24.0/daemon/gdm-session-worker.c
===================================================================
--- gdm-2.24.0.orig/daemon/gdm-session-worker.c
+++ gdm-2.24.0/daemon/gdm-session-worker.c
@@ -2395,7 +2395,10 @@ on_setup (GdmSessionWorker *worker,
const char *hostname;
dbus_bool_t res;
- /* FIXME: return error if not in NONE state */
+ if (worker->priv->state != GDM_SESSION_WORKER_STATE_NONE) {
+ g_debug ("GdmSessionWorker: ignoring spurious setup while in state %s", get_state_name (worker->priv->state));
+ return;
+ }
dbus_error_init (&error);
res = dbus_message_get_args (message,
@@ -2435,7 +2438,10 @@ on_setup_for_user (GdmSessionWorker *wor
const char *username;
dbus_bool_t res;
- /* FIXME: return error if not in NONE state */
+ if (worker->priv->state != GDM_SESSION_WORKER_STATE_NONE) {
+ g_debug ("GdmSessionWorker: ignoring spurious setup for user while in state %s", get_state_name (worker->priv->state));
+ return;
+ }
dbus_error_init (&error);
res = dbus_message_get_args (message,

View File

@ -1,7 +1,6 @@
Index: gdm-2.25.92/data/Init.in
===================================================================
--- gdm-2.25.92.orig/data/Init.in
+++ gdm-2.25.92/data/Init.in
diff -urN gdm-2.27.4/data/Init.in gdm-2.27.4.patched//data/Init.in
--- gdm-2.27.4/data/Init.in 2009-05-19 17:18:12.000000000 +0200
+++ gdm-2.27.4.patched//data/Init.in 2009-07-20 17:06:44.000000000 +0200
@@ -1,4 +1,9 @@
#!/bin/sh
+
@ -12,10 +11,9 @@ Index: gdm-2.25.92/data/Init.in
# Stolen from the debian kdm setup, aren't I sneaky
# Plus a lot of fun stuff added
# -George
Index: gdm-2.25.92/data/PostSession.in
===================================================================
--- gdm-2.25.92.orig/data/PostSession.in
+++ gdm-2.25.92/data/PostSession.in
diff -urN gdm-2.27.4/data/PostSession.in gdm-2.27.4.patched//data/PostSession.in
--- gdm-2.27.4/data/PostSession.in 2009-05-19 17:18:12.000000000 +0200
+++ gdm-2.27.4.patched//data/PostSession.in 2009-07-20 17:06:44.000000000 +0200
@@ -1,3 +1,7 @@
#!/bin/sh
@ -24,10 +22,9 @@ Index: gdm-2.25.92/data/PostSession.in
+fi
+
exit 0
Index: gdm-2.25.92/data/Xsession.in
===================================================================
--- gdm-2.25.92.orig/data/Xsession.in
+++ gdm-2.25.92/data/Xsession.in
diff -urN gdm-2.27.4/data/Xsession.in gdm-2.27.4.patched//data/Xsession.in
--- gdm-2.27.4/data/Xsession.in 2009-07-20 03:09:09.000000000 +0200
+++ gdm-2.27.4.patched//data/Xsession.in 2009-07-20 17:09:51.000000000 +0200
@@ -1,235 +1,6 @@
-#!@XSESSION_SHELL@
-#
@ -53,8 +50,7 @@ Index: gdm-2.25.92/data/Xsession.in
-#
-# based on:
-# $XConsortium: Xsession /main/10 1995/12/18 18:21:28 gildea $
+#!/bin/sh
-
-command="$@"
-
-# this will go into the .xsession-errors along with all other echo's
@ -126,15 +122,15 @@ Index: gdm-2.25.92/data/Xsession.in
-
-# merge in defaults
-if [ -f "$rh6sysresources" ]; then
- xrdb -merge "$rh6sysresources"
- xrdb -nocpp -merge "$rh6sysresources"
-fi
-
-if [ -f "$sysresources" ]; then
- xrdb -merge "$sysresources"
- xrdb -nocpp -merge "$sysresources"
-fi
-
-if [ -f "$userresources" ]; then
- xrdb -merge "$userresources"
- xrdb -nocpp -merge "$userresources"
-fi
-
-# merge in keymaps
@ -159,10 +155,7 @@ Index: gdm-2.25.92/data/Xsession.in
- XKB_IN_USE=yes
- fi
- fi
+if test -f /etc/X11/xdm/Xstartup -a -x /etc/X11/xdm/Xsession; then
+ /bin/bash /etc/X11/xdm/Xstartup
+ exec /etc/X11/xdm/Xsession $1 $GDM_LANG
fi
-fi
-
-# xkb and xmodmap don't play nice together
-if [ -z "$XKB_IN_USE" ]; then
@ -265,6 +258,10 @@ Index: gdm-2.25.92/data/Xsession.in
-if [ -n "$zenity" ] ; then
- disptext=`gettextfunc "Failed to start the session, so starting a failsafe xterm session. Windows will have focus only if the mouse pointer is above them. To get out of this mode type 'exit' in the window."`
- "$zenity" --info --text "$disptext"
-fi
-
+#!/bin/sh
+if test -f /etc/X11/xdm/Xstartup -a -x /etc/X11/xdm/Xsession; then
+ /bin/bash /etc/X11/xdm/Xstartup
+ exec /etc/X11/xdm/Xsession $1 $GDM_LANG
fi
-exec xterm -geometry 80x24+0+0

View File

@ -1,3 +1,62 @@
-------------------------------------------------------------------
Fri Jul 31 20:45:30 CEST 2009 - vuntz@novell.com
- Correctly comment out patch that needs rebasing.
-------------------------------------------------------------------
Mon Jul 20 15:13:31 CEST 2009 - dominique-obs@leuenberger.net
- Update to version 2.27.4:
+ Favor XFree86 Xinerama over Solaris Xinerama on Solaris
+ Make greeter a well behaved session client
+ XDMCP fixes
+ Fix up btmp record handling
+ Handle locales with modifiers better
+ Use better logic with keyboard layout handling
+ Change example PAM file/documentation to demonstrate
password-less login
+ Handle usernames from non-utf8 locales
+ Allow dbus introspection for gdm services
+ Show more details authentication error messages in UI
+ Allow uppercase and lowercase booleans in config file
+ Be more consistent with booleans in schemas
+ Use g_timeout_add_seconds to reduce wakeups
+ Make greeter window more clear when user list is disabled
+ Put greeter login window in same ctrl-alt-tab menu as panel
+ Port greeter to PolicyKit 1.0
+ Shave off 1/2 second delay when bringing up greeter
+ OS X portability fixes
+ Look for locales in /usr/lib/locale instead of /usr/share/locale
+ Better handling when two users have the same name
- Drop upstreamed patches:
+ gdm-session-worker-check-states.patch
+ gdm-fix-locale-listing.patch
+ gdm-dbus-allow-introspection.patch
+ gdm-keyboard-invalid-user-data.patch
+ gdm-proper-session-handling.patch
+ gdm-accreditation-failed-log.patch
+ gdm-hide-lonely-other.patch
- Rebased patches:
+ gdm-suse-xsession.patch
+ gdm-keyboard-from-hal.patch
- Disables patches (need rebasing)
+ gdm-domain-logon.patch
- Clean %%files section from duplicates
- Drop dependency to PolicyKit-devel
-------------------------------------------------------------------
Mon Jun 15 18:20:27 CEST 2009 - vuntz@novell.com
- Update gdm-keyboard-invalid-user-data.patch to the patch that was
committed to git (fix a bug where layouts with variant were
considered invalid).
-------------------------------------------------------------------
Sun Jun 14 04:40:56 CEST 2009 - vuntz@novell.com
- Add gdm-proper-session-handling.patch to fix bnc#506040:
correctly handle the end of session, to not show an error dialog.
-------------------------------------------------------------------
Tue Jun 9 23:54:48 CEST 2009 - vuntz@novell.com

1177
gdm.spec

File diff suppressed because it is too large Load Diff