This commit is contained in:
parent
9e96d6be53
commit
63c324c1df
@ -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
3
gdm-2.27.4.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:17507e91bbea0c34ceb5eca28d25affa7c47069c93601fa83c0fda653d391f67
|
||||
size 2505492
|
@ -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);
|
@ -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>
|
@ -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);
|
@ -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
|
@ -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");
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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,
|
@ -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
|
||||
|
59
gdm.changes
59
gdm.changes
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user