SHA256
1
0
forked from pool/gdm
OBS User unknown 2008-12-01 11:07:15 +00:00 committed by Git OBS Bridge
parent 655258077f
commit 726d495c80
5 changed files with 276 additions and 17 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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) {

View File

@ -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

View File

@ -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