From 726d495c80fa8d83774219a85fda4d9c9610f3f348493187b52ca5399e4e5455 Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Mon, 1 Dec 2008 11:07:15 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gdm?expand=0&rev=68 --- gdm-domain-logon.patch | 117 ++++++++++++++++-- gdm-save-panel-space-on-low-resolutions.patch | 53 ++++++++ gdm-sysconfig-settings.patch | 91 +++++++++++++- gdm.changes | 18 +++ gdm.spec | 14 ++- 5 files changed, 276 insertions(+), 17 deletions(-) create mode 100644 gdm-save-panel-space-on-low-resolutions.patch diff --git a/gdm-domain-logon.patch b/gdm-domain-logon.patch index e499c1b..b2054bc 100644 --- a/gdm-domain-logon.patch +++ b/gdm-domain-logon.patch @@ -1665,7 +1665,7 @@ index 0000000..6a318ff + +#endif /* __GDM_DOMAIN_PROVIDER_H */ diff --git a/gui/simple-greeter/gdm-greeter-panel.c b/gui/simple-greeter/gdm-greeter-panel.c -index 50478c5..e557ba9 100644 +index 50478c5..825f0c5 100644 --- a/gui/simple-greeter/gdm-greeter-panel.c +++ b/gui/simple-greeter/gdm-greeter-panel.c @@ -40,6 +40,7 @@ @@ -1756,7 +1756,7 @@ index 50478c5..e557ba9 100644 } void -@@ -651,6 +690,7 @@ gdm_greeter_panel_hide_user_options (GdmGreeterPanel *panel) +@@ -651,18 +690,26 @@ gdm_greeter_panel_hide_user_options (GdmGreeterPanel *panel) gtk_widget_hide (panel->priv->session_option_widget); gtk_widget_hide (panel->priv->language_option_widget); gtk_widget_hide (panel->priv->layout_option_widget); @@ -1764,7 +1764,26 @@ index 50478c5..e557ba9 100644 g_debug ("GdmGreeterPanel: activating default layout"); gdm_layout_activate (NULL); -@@ -730,3 +770,20 @@ gdm_greeter_panel_set_default_session_name (GdmGreeterPanel *panel, + } + + void ++gdm_greeter_panel_set_domain_enabled (GdmGreeterPanel *panel, gboolean enabled) ++{ ++ gtk_widget_set_sensitive (panel->priv->domain_option_widget, enabled); ++} ++ ++void + gdm_greeter_panel_reset (GdmGreeterPanel *panel) + { + gdm_greeter_panel_set_default_language_name (panel, NULL); + gdm_greeter_panel_set_default_layout_name (panel, NULL); + gdm_greeter_panel_set_default_session_name (panel, NULL); + gdm_greeter_panel_hide_user_options (panel); ++ gdm_greeter_panel_set_domain_enabled (panel, TRUE); + } + + void +@@ -730,3 +777,20 @@ gdm_greeter_panel_set_default_session_name (GdmGreeterPanel *panel, gdm_option_widget_set_default_item (GDM_OPTION_WIDGET (panel->priv->session_option_widget), session_name); } @@ -1786,7 +1805,7 @@ index 50478c5..e557ba9 100644 + domain_name); +} diff --git a/gui/simple-greeter/gdm-greeter-panel.h b/gui/simple-greeter/gdm-greeter-panel.h -index 07cca3f..5d2e2b2 100644 +index 07cca3f..6079569 100644 --- a/gui/simple-greeter/gdm-greeter-panel.h +++ b/gui/simple-greeter/gdm-greeter-panel.h @@ -53,6 +53,9 @@ typedef struct @@ -1799,7 +1818,15 @@ index 07cca3f..5d2e2b2 100644 } GdmGreeterPanelClass; GType gdm_greeter_panel_get_type (void); -@@ -70,6 +73,8 @@ void gdm_greeter_panel_set_default_layout_name (GdmGree +@@ -64,12 +67,16 @@ void gdm_greeter_panel_show_user_options (GdmGree + void gdm_greeter_panel_hide_user_options (GdmGreeterPanel *panel); + void gdm_greeter_panel_reset (GdmGreeterPanel *panel); + ++void gdm_greeter_panel_set_domain_enabled (GdmGreeterPanel *panel, gboolean enabled); ++ + void gdm_greeter_panel_set_default_language_name (GdmGreeterPanel *panel, + const char *language_name); + void gdm_greeter_panel_set_default_layout_name (GdmGreeterPanel *panel, const char *layout_name); void gdm_greeter_panel_set_default_session_name (GdmGreeterPanel *panel, const char *session_name); @@ -1809,7 +1836,7 @@ index 07cca3f..5d2e2b2 100644 #endif /* __GDM_GREETER_PANEL_H */ diff --git a/gui/simple-greeter/gdm-greeter-session.c b/gui/simple-greeter/gdm-greeter-session.c -index 83375b2..50c0e33 100644 +index 83375b2..fe85746 100644 --- a/gui/simple-greeter/gdm-greeter-session.c +++ b/gui/simple-greeter/gdm-greeter-session.c @@ -38,6 +38,8 @@ @@ -1821,17 +1848,19 @@ index 83375b2..50c0e33 100644 #include "gdm-profile.h" #define GDM_GREETER_SESSION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_GREETER_SESSION, GdmGreeterSessionPrivate)) -@@ -48,6 +50,9 @@ struct GdmGreeterSessionPrivate +@@ -48,6 +50,11 @@ struct GdmGreeterSessionPrivate GtkWidget *login_window; GtkWidget *panel; + + char *user; + char *domain; ++ ++ gint n_info_queries; }; enum { -@@ -62,6 +67,33 @@ G_DEFINE_TYPE (GdmGreeterSession, gdm_greeter_session, G_TYPE_OBJECT) +@@ -62,6 +69,33 @@ G_DEFINE_TYPE (GdmGreeterSession, gdm_greeter_session, G_TYPE_OBJECT) static gpointer session_object = NULL; @@ -1865,7 +1894,28 @@ index 83375b2..50c0e33 100644 static void on_info (GdmGreeterClient *client, const char *text, -@@ -198,8 +230,14 @@ on_begin_verification_for_user (GdmGreeterLoginWindow *login_window, +@@ -99,6 +133,10 @@ on_reset (GdmGreeterClient *client, + + gdm_greeter_panel_reset (GDM_GREETER_PANEL (session->priv->panel)); + gdm_greeter_login_window_reset (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window)); ++ ++ session->priv->n_info_queries = 0; ++ if (session->priv->panel) ++ gdm_greeter_panel_set_domain_enabled (GDM_GREETER_PANEL (session->priv->panel), TRUE); + } + + static void +@@ -174,6 +212,9 @@ on_secret_info_query (GdmGreeterClient *client, + { + g_debug ("GdmGreeterSession: Secret info query: %s", text); + ++ if (session->priv->panel) ++ gdm_greeter_panel_set_domain_enabled (GDM_GREETER_PANEL (session->priv->panel), FALSE); ++ + gdm_greeter_login_window_secret_info_query (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window), text); + } + +@@ -198,8 +239,14 @@ on_begin_verification_for_user (GdmGreeterLoginWindow *login_window, const char *username, GdmGreeterSession *session) { @@ -1881,7 +1931,30 @@ index 83375b2..50c0e33 100644 } static void -@@ -236,13 +274,46 @@ on_select_layout (GdmGreeterSession *session, +@@ -207,8 +254,21 @@ on_query_answer (GdmGreeterLoginWindow *login_window, + const char *text, + GdmGreeterSession *session) + { ++ gchar *temp; ++ ++ if (session->priv->n_info_queries == 0) ++ temp = maybe_prepend_domain_to_user (session, text); ++ else ++ temp = g_strdup (text); ++ ++ if (session->priv->panel) ++ gdm_greeter_panel_set_domain_enabled (GDM_GREETER_PANEL (session->priv->panel), FALSE); ++ + gdm_greeter_client_call_answer_query (session->priv->client, +- text); ++ temp); ++ ++ g_free (temp); ++ session->priv->n_info_queries++; + } + + static void +@@ -236,13 +296,46 @@ on_select_layout (GdmGreeterSession *session, } static void @@ -1929,7 +2002,18 @@ index 83375b2..50c0e33 100644 } static void -@@ -300,6 +371,11 @@ toggle_panel (GdmGreeterSession *session, +@@ -251,6 +344,10 @@ on_cancelled (GdmGreeterLoginWindow *login_window, + { + gdm_greeter_panel_hide_user_options (GDM_GREETER_PANEL (session->priv->panel)); + gdm_greeter_client_call_cancel (session->priv->client); ++ ++ session->priv->n_info_queries = 0; ++ if (session->priv->panel) ++ gdm_greeter_panel_set_domain_enabled (GDM_GREETER_PANEL (session->priv->panel), TRUE); + } + + static void +@@ -300,6 +397,11 @@ toggle_panel (GdmGreeterSession *session, G_CALLBACK (on_select_session), session); @@ -1941,7 +2025,16 @@ index 83375b2..50c0e33 100644 gtk_widget_show (session->priv->panel); } else { gtk_widget_destroy (session->priv->panel); -@@ -563,6 +639,9 @@ gdm_greeter_session_finalize (GObject *object) +@@ -542,6 +644,8 @@ gdm_greeter_session_init (GdmGreeterSession *session) + G_CALLBACK (on_user_authorized), + session); + ++ session->priv->n_info_queries = 0; ++ + /* We want to listen for panel mnemonics even if the + * login window is focused, so we intercept them here. + */ +@@ -563,6 +667,9 @@ gdm_greeter_session_finalize (GObject *object) g_return_if_fail (greeter_session->priv != NULL); diff --git a/gdm-save-panel-space-on-low-resolutions.patch b/gdm-save-panel-space-on-low-resolutions.patch new file mode 100644 index 0000000..9390b18 --- /dev/null +++ b/gdm-save-panel-space-on-low-resolutions.patch @@ -0,0 +1,53 @@ +diff --git a/gui/simple-greeter/gdm-greeter-panel.c b/gui/simple-greeter/gdm-greeter-panel.c +index e557ba9..c3e1c9b 100644 +--- a/gui/simple-greeter/gdm-greeter-panel.c ++++ b/gui/simple-greeter/gdm-greeter-panel.c +@@ -557,6 +557,7 @@ gdm_greeter_panel_init (GdmGreeterPanel *panel) + { + NaTray *tray; + GtkWidget *spacer; ++ GdkScreen *screen; + + gdm_profile_start (NULL); + +@@ -634,7 +635,15 @@ gdm_greeter_panel_init (GdmGreeterPanel *panel) + panel->priv->clock = gdm_clock_widget_new (); + gtk_box_pack_end (GTK_BOX (panel->priv->hbox), + GTK_WIDGET (panel->priv->clock), FALSE, FALSE, 6); +- gtk_widget_show (panel->priv->clock); ++ ++ screen = gtk_widget_get_screen (panel->priv->clock); ++ if (!screen) ++ screen = gdk_screen_get_default (); ++ ++ /* If resolution is limited, hide clock to conserve horizontal space */ ++ ++ if (!screen || gdk_screen_get_width (screen) > 1024) ++ gtk_widget_show (panel->priv->clock); + + tray = na_tray_new_for_screen (gtk_window_get_screen (GTK_WINDOW (panel)), + GTK_ORIENTATION_HORIZONTAL); +diff --git a/gui/simple-greeter/gdm-option-widget.c b/gui/simple-greeter/gdm-option-widget.c +index 5561ce6..d49a375 100644 +--- a/gui/simple-greeter/gdm-option-widget.c ++++ b/gui/simple-greeter/gdm-option-widget.c +@@ -617,8 +617,18 @@ gdm_option_widget_check_visibility (GdmOptionWidget *widget) + if (widget->priv->number_of_top_rows > 0 || + widget->priv->number_of_middle_rows > 1 || + widget->priv->number_of_bottom_rows > 0) { ++ GdkScreen *screen; ++ + gtk_widget_show (widget->priv->items_combo_box); +- gtk_widget_show (widget->priv->label); ++ ++ screen = gtk_widget_get_screen (widget->priv->label); ++ if (!screen) ++ screen = gdk_screen_get_default (); ++ ++ /* If resolution is limited, hide labels to conserve horizontal space */ ++ ++ if (!screen || gdk_screen_get_width (screen) > 1280) ++ gtk_widget_show (widget->priv->label); + + if (widget->priv->icon_name != NULL) { + gtk_widget_show (widget->priv->image); diff --git a/gdm-sysconfig-settings.patch b/gdm-sysconfig-settings.patch index d3444d1..c7d8bdd 100644 --- a/gdm-sysconfig-settings.patch +++ b/gdm-sysconfig-settings.patch @@ -992,7 +992,7 @@ index 0000000..9bc21ec + +#endif /* __GDM_SYSCONFIG_H */ diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c -index 75a1cec..8b74dea 100644 +index 75a1cec..886e7e8 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c @@ -45,6 +45,8 @@ @@ -1004,18 +1004,101 @@ index 75a1cec..8b74dea 100644 #include "gdm-session-direct.h" #include "gdm-session.h" #include "gdm-session-private.h" -@@ -600,9 +602,11 @@ get_default_language_name (GdmSessionDirect *session) +@@ -600,8 +602,16 @@ get_default_language_name (GdmSessionDirect *session) static const char * get_default_layout_name (GdmSessionDirect *session) { - if (session->priv->saved_layout != NULL) { - return session->priv->saved_layout; -- } + if (!session->priv->saved_layout) + session->priv->saved_layout = gdm_sysconfig_load_value ("/etc/sysconfig/keyboard", "KEYTABLE"); + -+ if (session->priv->saved_layout) ++ if (session->priv->saved_layout) { ++ if (g_str_has_suffix (session->priv->saved_layout, ".gz")) ++ *(session->priv->saved_layout + strlen (session->priv->saved_layout) - strlen (".gz")) = '\0'; ++ if (g_str_has_suffix (session->priv->saved_layout, ".map")) ++ *(session->priv->saved_layout + strlen (session->priv->saved_layout) - strlen (".map")) = '\0'; ++ + return session->priv->saved_layout; + } return "us"; +diff --git a/gui/simple-greeter/gdm-layouts.c b/gui/simple-greeter/gdm-layouts.c +index 479d5ea..fba3147 100644 +--- a/gui/simple-greeter/gdm-layouts.c ++++ b/gui/simple-greeter/gdm-layouts.c +@@ -70,14 +70,35 @@ xci_desc_to_utf8 (XklConfigItem * ci) + g_locale_to_utf8 (sd, -1, NULL, NULL, NULL); } + ++static gchar * ++canonicalize_layout_name (const gchar *name) ++{ ++ gchar *canon_name; ++ ++ if (!name) ++ return NULL; ++ ++ canon_name = g_strdup (name); ++ ++ if (g_str_has_suffix (canon_name, ".gz")) ++ *(canon_name + strlen (canon_name) - strlen (".gz")) = '\0'; ++ if (g_str_has_suffix (canon_name, ".map")) ++ *(canon_name + strlen (canon_name) - strlen (".map")) = '\0'; ++ ++ return canon_name; ++} ++ + static void + add_variant (XklConfigRegistry *config, + const XklConfigItem *item, + gpointer data) + { + LayoutData *ldata = data; ++ gchar *name; + +- ldata->list = g_slist_prepend (ldata->list, g_strdup_printf ("%s\t%s", ldata->layout, item->name)); ++ name = canonicalize_layout_name (item->name); ++ ldata->list = g_slist_prepend (ldata->list, g_strdup_printf ("%s\t%s", ldata->layout, name)); ++ g_free (name); + } + + static void +@@ -86,11 +107,16 @@ add_layout (XklConfigRegistry *config, + gpointer data) + { + LayoutData *ldata = data; ++ gchar *name; + +- ldata->layout = item->name; +- ldata->list = g_slist_prepend (ldata->list, g_strdup (item->name)); +- xkl_config_registry_foreach_layout_variant (config, item->name, add_variant, data); ++ name = canonicalize_layout_name (item->name); ++ ++ ldata->layout = name; ++ ldata->list = g_slist_prepend (ldata->list, g_strdup (name)); ++ xkl_config_registry_foreach_layout_variant (config, name, add_variant, data); + ldata->layout = NULL; ++ ++ g_free (name); + } + #endif + +@@ -108,7 +134,7 @@ gdm_get_layout_from_name (const char *name) + + init_xkl (); + +- id1 = g_strdup (name); ++ id1 = canonicalize_layout_name (name); + p = strchr (id1, '\t'); + + if (p != NULL) { +@@ -207,7 +233,7 @@ gdm_layout_activate (const char *layout) + config->options = g_strdupv (initial_config->options); + } else { + config->layouts = g_new0 (char *, 2); +- config->layouts[0] = g_strdup (layout); ++ config->layouts[0] = canonicalize_layout_name (layout); + + p = strchr (config->layouts[0], '\t'); + if (p != NULL) { diff --git a/gdm.changes b/gdm.changes index f781d9c..e6d89b2 100644 --- a/gdm.changes +++ b/gdm.changes @@ -1,3 +1,21 @@ +------------------------------------------------------------------- +Sun Nov 30 22:55:57 CST 2008 - hpj@novell.com + +- Update gdm-sysconfig-settings.patch to translate the name of the + configured system keymap into something libxklavier can + understand (bnc#446958). + +------------------------------------------------------------------- +Sun Nov 30 18:05:54 CST 2008 - hpj@novell.com + +- Update gdm-domain-logon.patch to make domain prefix logon work + when entering user names manually (bnc#450146). + +------------------------------------------------------------------- +Sat Nov 29 19:44:16 CST 2008 - hpj@novell.com + +- Add gdm-save-panel-space-on-low-resolutions.patch (bnc#449815). + ------------------------------------------------------------------- Fri Nov 21 01:57:52 CST 2008 - hpj@novell.com diff --git a/gdm.spec b/gdm.spec index 99cf470..6af8376 100644 --- a/gdm.spec +++ b/gdm.spec @@ -57,7 +57,7 @@ PreReq: %insserv_prereq License: GPL v2 or later Group: System/GUI/GNOME Version: 2.24.0 -Release: 12 +Release: 13 Summary: The GNOME 2.x Display Manager Source: %{name}-%{version}.tar.bz2 Source1: gdm.pamd @@ -95,6 +95,8 @@ Patch16: gdm-fix-xdmcp.patch Patch17: gdm-fix-pam-auditing.patch # PATCH-FIX-UPSTREAM gdm-always-reflect-keyboard-layout.patch bnc438159 bgo561771 hpj@novell.com -- Make keyboard selector not neglect to apply the selected keyboard in some situations. Patch18: gdm-always-reflect-keyboard-layout.patch +# PATCH-FIX-OPENSUSE gdm-save-panel-space-on-low-resolutions.patch bnc449815 hpj@novell.com -- Hide clock and/or selector labels on low resolutions. +Patch19: gdm-save-panel-space-on-low-resolutions.patch Patch28: gdm-X_SERVER.patch # PATCH-SUSE: enable SELinux Patch60: gdm-selinux.patch @@ -175,6 +177,7 @@ Authors: %patch16 -p1 %patch17 -p0 %patch18 -p1 +%patch19 -p1 %patch28 %patch60 @@ -283,6 +286,15 @@ fi %files lang -f %{name}.lang %changelog +* Sun Nov 30 2008 hpj@novell.com +- Update gdm-sysconfig-settings.patch to translate the name of the + configured system keymap into something libxklavier can + understand (bnc#446958). +* Sun Nov 30 2008 hpj@novell.com +- Update gdm-domain-logon.patch to make domain prefix logon work + when entering user names manually (bnc#450146). +* Sat Nov 29 2008 hpj@novell.com +- Add gdm-save-panel-space-on-low-resolutions.patch (bnc#449815). * Fri Nov 21 2008 hpj@novell.com - Add gdm-always-reflect-keyboard-layout.patch (bnc#438159). * Thu Nov 20 2008 hpj@novell.com