add forgotton patch
This commit is contained in:
parent
ae24a6d786
commit
5e345b24dd
289
add-session-chooser.patch
Normal file
289
add-session-chooser.patch
Normal file
@ -0,0 +1,289 @@
|
||||
From 11139d9e693ecb1e5dcf6b538f0873a3e97730c8 Mon Sep 17 00:00:00 2001
|
||||
From: Ray Strode <rstrode@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
|
||||
|
Loading…
Reference in New Issue
Block a user