[gdm/f15/master] add forgotton patch

Ray Strode rstrode at fedoraproject.org
Thu Feb 17 19:00:26 UTC 2011


commit 5e345b24dd63c0efbe7c7f41e355bd60a6f23d2c
Author: Ray Strode <rstrode at redhat.com>
Date:   Thu Feb 17 14:00:14 2011 -0500

    add forgotton patch

 add-session-chooser.patch |  289 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 289 insertions(+), 0 deletions(-)
---
diff --git a/add-session-chooser.patch b/add-session-chooser.patch
new file mode 100644
index 0000000..b0e5819
--- /dev/null
+++ b/add-session-chooser.patch
@@ -0,0 +1,289 @@
+From 11139d9e693ecb1e5dcf6b538f0873a3e97730c8 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode at redhat.com>
+Date: Thu, 17 Feb 2011 11:09:10 -0500
+Subject: [PATCH] greeter: add session chooser to dialog
+
+Since we don't have it in the panel anymore, put it in the dialog.
+---
+ gui/simple-greeter/Makefile.am                 |    4 +
+ gui/simple-greeter/gdm-greeter-login-window.c  |   78 +++++++++++++++++++++++-
+ gui/simple-greeter/gdm-greeter-login-window.h  |    4 +
+ gui/simple-greeter/gdm-greeter-login-window.ui |    4 +-
+ gui/simple-greeter/gdm-greeter-session.c       |   10 +++-
+ gui/simple-greeter/gdm-session-option-widget.c |    1 -
+ 6 files changed, 95 insertions(+), 6 deletions(-)
+
+diff --git a/gui/simple-greeter/Makefile.am b/gui/simple-greeter/Makefile.am
+index 74edd01..aa78504 100644
+--- a/gui/simple-greeter/Makefile.am
++++ b/gui/simple-greeter/Makefile.am
+@@ -75,6 +75,10 @@ test_greeter_login_window_SOURCES = 	\
+ 	gdm-sessions.c			\
+ 	gdm-cell-renderer-timer.h	\
+ 	gdm-cell-renderer-timer.c	\
++	gdm-option-widget.h		\
++	gdm-option-widget.c		\
++	gdm-session-option-widget.h	\
++	gdm-session-option-widget.c	\
+ 	gdm-user-chooser-widget.h	\
+ 	gdm-user-chooser-widget.c	\
+ 	gdm-user-chooser-dialog.h	\
+diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
+index 6dc201a..c220dc4 100644
+--- a/gui/simple-greeter/gdm-greeter-login-window.c
++++ b/gui/simple-greeter/gdm-greeter-login-window.c
+@@ -56,6 +56,7 @@
+ 
+ #include "gdm-greeter-login-window.h"
+ #include "gdm-user-chooser-widget.h"
++#include "gdm-session-option-widget.h"
+ 
+ #ifdef HAVE_PAM
+ #include <security/pam_appl.h>
+@@ -85,6 +86,7 @@
+ #define LSB_RELEASE_COMMAND "lsb_release -d"
+ 
+ #define GDM_GREETER_LOGIN_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_GREETER_LOGIN_WINDOW, GdmGreeterLoginWindowPrivate))
++#define GDM_CUSTOM_SESSION "custom"
+ 
+ enum {
+         MODE_UNDEFINED = 0,
+@@ -102,6 +104,7 @@ enum {
+ struct GdmGreeterLoginWindowPrivate
+ {
+         GtkBuilder      *builder;
++        GtkWidget       *session_option_widget;
+         GtkWidget       *user_chooser;
+         GtkWidget       *auth_banner_label;
+         GtkWidget       *current_button;
+@@ -143,6 +146,7 @@ enum {
+         QUERY_ANSWER,
+         START_SESSION,
+         USER_SELECTED,
++        SESSION_SELECTED,
+         CANCELLED,
+         LAST_SIGNAL
+ };
+@@ -505,12 +509,15 @@ switch_mode (GdmGreeterLoginWindow *login_window,
+         switch (number) {
+         case MODE_SELECTION:
+                 set_log_in_button_mode (login_window, LOGIN_BUTTON_HIDDEN);
++                gtk_widget_hide (login_window->priv->session_option_widget);
+                 break;
+         case MODE_TIMED_LOGIN:
+                 set_log_in_button_mode (login_window, LOGIN_BUTTON_TIMED_LOGIN);
++                gtk_widget_show (login_window->priv->session_option_widget);
+                 break;
+         case MODE_AUTHENTICATION:
+                 set_log_in_button_mode (login_window, LOGIN_BUTTON_ANSWER_QUERY);
++                gtk_widget_show (login_window->priv->session_option_widget);
+                 break;
+         default:
+                 g_assert_not_reached ();
+@@ -878,6 +885,7 @@ gdm_greeter_login_window_info_query (GdmGreeterLoginWindow *login_window,
+         gtk_label_set_text (GTK_LABEL (label), text);
+ 
+         show_widget (login_window, "auth-input-box", TRUE);
++
+         set_sensitive (GDM_GREETER_LOGIN_WINDOW (login_window), TRUE);
+         set_ready (GDM_GREETER_LOGIN_WINDOW (login_window));
+         set_focus (GDM_GREETER_LOGIN_WINDOW (login_window));
+@@ -908,6 +916,7 @@ gdm_greeter_login_window_secret_info_query (GdmGreeterLoginWindow *login_window,
+         gtk_label_set_text (GTK_LABEL (label), text);
+ 
+         show_widget (login_window, "auth-input-box", TRUE);
++        gtk_widget_show (login_window->priv->session_option_widget);
+         set_sensitive (GDM_GREETER_LOGIN_WINDOW (login_window), TRUE);
+         set_ready (GDM_GREETER_LOGIN_WINDOW (login_window));
+         set_focus (GDM_GREETER_LOGIN_WINDOW (login_window));
+@@ -1049,6 +1058,46 @@ on_user_unchosen (GdmUserChooserWidget  *user_chooser,
+ }
+ 
+ static void
++on_session_activated (GdmSessionOptionWidget *session_option_widget,
++                      GdmGreeterLoginWindow  *login_window)
++{
++        char *session;
++
++        session = gdm_session_option_widget_get_current_session (GDM_SESSION_OPTION_WIDGET (login_window->priv->session_option_widget));
++        if (session == NULL) {
++                return;
++        }
++
++        g_signal_emit (login_window, signals[SESSION_SELECTED], 0, session);
++
++        g_free (session);
++}
++
++void
++gdm_greeter_login_window_set_default_session_name (GdmGreeterLoginWindow *login_window,
++                                                   const char            *session_name)
++{
++        g_return_if_fail (GDM_IS_GREETER_LOGIN_WINDOW (login_window));
++
++        if (session_name != NULL && !gdm_option_widget_lookup_item (GDM_OPTION_WIDGET (login_window->priv->session_option_widget),
++                                            session_name, NULL, NULL, NULL)) {
++                if (strcmp (session_name, GDM_CUSTOM_SESSION) == 0) {
++                        gdm_option_widget_add_item (GDM_OPTION_WIDGET (login_window->priv->session_option_widget),
++                                                    GDM_CUSTOM_SESSION,
++                                                    C_("customsession", "Custom"),
++                                                    _("Custom session"),
++                                                    GDM_OPTION_WIDGET_POSITION_TOP);
++                } else {
++                        g_warning ("Default session is not available");
++                        return;
++                }
++        }
++
++        gdm_option_widget_set_default_item (GDM_OPTION_WIDGET (login_window->priv->session_option_widget),
++                                            session_name);
++}
++
++static void
+ rotate_computer_info (GdmGreeterLoginWindow *login_window)
+ {
+         GtkWidget *notebook;
+@@ -1264,7 +1313,7 @@ load_theme (GdmGreeterLoginWindow *login_window)
+         box = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "window-frame"));
+         gtk_container_add (GTK_CONTAINER (login_window), box);
+ 
+-        /* FIXME: user chooser should implement GtkBuildable and this should get dropped
++        /* FIXME: user and session chooser should get loaded from ui file instead
+          */
+         login_window->priv->user_chooser = gdm_user_chooser_widget_new ();
+         box = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "selection-box"));
+@@ -1273,6 +1322,7 @@ load_theme (GdmGreeterLoginWindow *login_window)
+ 
+         gdm_user_chooser_widget_set_show_only_chosen (GDM_USER_CHOOSER_WIDGET (login_window->priv->user_chooser), TRUE);
+ 
++
+         g_signal_connect (login_window->priv->user_chooser,
+                           "loaded",
+                           G_CALLBACK (on_users_loaded),
+@@ -1291,6 +1341,22 @@ load_theme (GdmGreeterLoginWindow *login_window)
+                                  G_CALLBACK (on_user_chooser_visibility_changed),
+                                  login_window);
+ 
++        login_window->priv->session_option_widget = gdm_session_option_widget_new ();
++        box = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "buttonbox"));
++        g_object_set (G_OBJECT (login_window->priv->session_option_widget),
++                      "xscale", 0.0,
++                      "yscale", 0.0,
++                      "xalign", 0.0,
++                      "yalign", 1.0,
++                      NULL);
++        gtk_container_add (GTK_CONTAINER (box), login_window->priv->session_option_widget);
++        gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (box), login_window->priv->session_option_widget, TRUE);
++
++        g_signal_connect (login_window->priv->session_option_widget,
++                          "activated",
++                          G_CALLBACK (on_session_activated),
++                          login_window);
++
+         login_window->priv->auth_banner_label = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "auth-banner-label"));
+         /*make_label_small_italic (login_window->priv->auth_banner_label);*/
+ 
+@@ -1560,6 +1626,16 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass)
+                               g_cclosure_marshal_VOID__STRING,
+                               G_TYPE_NONE,
+                               1, G_TYPE_STRING);
++        signals [SESSION_SELECTED] =
++                g_signal_new ("session-selected",
++                              G_TYPE_FROM_CLASS (object_class),
++                              G_SIGNAL_RUN_LAST,
++                              G_STRUCT_OFFSET (GdmGreeterLoginWindowClass, session_selected),
++                              NULL,
++                              NULL,
++                              g_cclosure_marshal_VOID__STRING,
++                              G_TYPE_NONE,
++                              1, G_TYPE_STRING);
+         signals [CANCELLED] =
+                 g_signal_new ("cancelled",
+                               G_TYPE_FROM_CLASS (object_class),
+diff --git a/gui/simple-greeter/gdm-greeter-login-window.h b/gui/simple-greeter/gdm-greeter-login-window.h
+index a5e68ae..c8b1167 100644
+--- a/gui/simple-greeter/gdm-greeter-login-window.h
++++ b/gui/simple-greeter/gdm-greeter-login-window.h
+@@ -55,6 +55,8 @@ typedef struct
+                                               const char            *text);
+         void (* user_selected)               (GdmGreeterLoginWindow *login_window,
+                                               const char            *text);
++        void (* session_selected)            (GdmGreeterLoginWindow *login_window,
++                                              const char            *text);
+         void (* cancelled)                   (GdmGreeterLoginWindow *login_window);
+         void (* start_session)               (GdmGreeterLoginWindow *login_window);
+ 
+@@ -75,6 +77,8 @@ gboolean            gdm_greeter_login_window_info               (GdmGreeterLogin
+                                                                  const char *text);
+ gboolean            gdm_greeter_login_window_problem            (GdmGreeterLoginWindow *login_window,
+                                                                  const char *text);
++void                gdm_greeter_login_window_set_default_session_name (GdmGreeterLoginWindow *login_window,
++                                                                       const char *text);
+ 
+ void               gdm_greeter_login_window_request_timed_login (GdmGreeterLoginWindow *login_window,
+                                                                  const char            *username,
+diff --git a/gui/simple-greeter/gdm-greeter-login-window.ui b/gui/simple-greeter/gdm-greeter-login-window.ui
+index 9f1bc69..8409166 100644
+--- a/gui/simple-greeter/gdm-greeter-login-window.ui
++++ b/gui/simple-greeter/gdm-greeter-login-window.ui
+@@ -277,8 +277,8 @@
+                     </child>
+                   </object>
+                   <packing>
+-                    <property name="expand">False</property>
+-                    <property name="fill">False</property>
++                    <property name="expand">True</property>
++                    <property name="fill">True</property>
+                     <property name="pack_type">end</property>
+                     <property name="position">2</property>
+                   </packing>
+diff --git a/gui/simple-greeter/gdm-greeter-session.c b/gui/simple-greeter/gdm-greeter-session.c
+index 14f518e..7be5acd 100644
+--- a/gui/simple-greeter/gdm-greeter-session.c
++++ b/gui/simple-greeter/gdm-greeter-session.c
+@@ -163,6 +163,7 @@ on_default_session_name_changed (GdmGreeterClient  *client,
+                                  GdmGreeterSession *session)
+ {
+         g_debug ("GdmGreeterSession: default session name changed: %s", text);
++        gdm_greeter_login_window_set_default_session_name (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window), text);
+ }
+ 
+ static void
+@@ -238,8 +239,9 @@ on_query_answer (GdmGreeterLoginWindow *login_window,
+ }
+ 
+ static void
+-on_select_session (GdmGreeterSession     *session,
+-                   const char            *text)
++on_select_session (GdmGreeterLoginWindow *login_window,
++                   const char            *text,
++                   GdmGreeterSession     *session)
+ {
+         gdm_greeter_client_call_select_session (session->priv->client,
+                                                 text);
+@@ -387,6 +389,10 @@ toggle_login_window (GdmGreeterSession *session,
+                                   G_CALLBACK (on_select_user),
+                                   session);
+                 g_signal_connect (session->priv->login_window,
++                                  "session-selected",
++                                  G_CALLBACK (on_select_session),
++                                  session);
++                g_signal_connect (session->priv->login_window,
+                                   "cancelled",
+                                   G_CALLBACK (on_cancelled),
+                                   session);
+diff --git a/gui/simple-greeter/gdm-session-option-widget.c b/gui/simple-greeter/gdm-session-option-widget.c
+index fb10098..d504d7c 100644
+--- a/gui/simple-greeter/gdm-session-option-widget.c
++++ b/gui/simple-greeter/gdm-session-option-widget.c
+@@ -160,7 +160,6 @@ gdm_session_option_widget_new (void)
+ 
+         object = g_object_new (GDM_TYPE_SESSION_OPTION_WIDGET,
+                                "label-text", _("Session"),
+-                               "icon-name", "session-properties",
+                                NULL);
+ 
+         return GTK_WIDGET (object);
+-- 
+1.7.4.1
+


More information about the scm-commits mailing list