Improve handling of CK error messages
This commit is contained in:
parent
f43d93da17
commit
7d61654d3b
130
ck-multi.patch
Normal file
130
ck-multi.patch
Normal file
@ -0,0 +1,130 @@
|
||||
diff -up gdm-2.21.10/gui/simple-greeter/gdm-greeter-login-window.c.ck-multi gdm-2.21.10/gui/simple-greeter/gdm-greeter-login-window.c
|
||||
--- gdm-2.21.10/gui/simple-greeter/gdm-greeter-login-window.c.ck-multi 2008-04-05 20:39:49.000000000 -0400
|
||||
+++ gdm-2.21.10/gui/simple-greeter/gdm-greeter-login-window.c 2008-04-05 20:42:23.000000000 -0400
|
||||
@@ -1036,20 +1036,41 @@ static PolKitAction *
|
||||
get_action_from_error (GError *error)
|
||||
{
|
||||
PolKitAction *action;
|
||||
- const char *paction;
|
||||
+ char *paction;
|
||||
+ char *p;
|
||||
|
||||
action = polkit_action_new ();
|
||||
|
||||
paction = NULL;
|
||||
if (g_str_has_prefix (error->message, "Not privileged for action: ")) {
|
||||
- paction = error->message + strlen ("Not privileged for action: ");
|
||||
+ paction = g_strdup (error->message + strlen ("Not privileged for action: "));
|
||||
+ p = strchr (paction, ' ');
|
||||
+ if (p)
|
||||
+ *p = '\0';
|
||||
}
|
||||
g_debug ("GdmGreeterLoginWindow: Requesting priv for '%s'", paction);
|
||||
|
||||
polkit_action_set_action_id (action, paction);
|
||||
|
||||
+ g_free (paction);
|
||||
+
|
||||
return action;
|
||||
}
|
||||
+
|
||||
+static PolKitResult
|
||||
+get_result_from_error (GError *error)
|
||||
+{
|
||||
+ PolKitResult result = POLKIT_RESULT_UNKNOWN;
|
||||
+ const char *p;
|
||||
+
|
||||
+ p = strrchr (error->message, ' ');
|
||||
+ if (p) {
|
||||
+ p++;
|
||||
+ polkit_result_from_string_representation (p, &result);
|
||||
+ }
|
||||
+
|
||||
+ return result;
|
||||
+}
|
||||
#endif
|
||||
|
||||
static void
|
||||
@@ -1076,11 +1097,40 @@ do_system_restart (GdmGreeterLoginWindow
|
||||
|
||||
if (dbus_g_error_has_name (error, "org.freedesktop.ConsoleKit.Manager.NotPrivileged")) {
|
||||
PolKitAction *action;
|
||||
+ PolKitAction *action2;
|
||||
+ PolKitResult result;
|
||||
+ GtkWidget *dialog;
|
||||
guint xid;
|
||||
pid_t pid;
|
||||
|
||||
+ result = get_result_from_error (error);
|
||||
action = get_action_from_error (error);
|
||||
|
||||
+ if (result == POLKIT_RESULT_NO) {
|
||||
+ action2 = polkit_action_new ();
|
||||
+ polkit_action_set_action_id (action2,
|
||||
+ "org.freedesktop.consolekit.system.restart-multiple-users");
|
||||
+ dialog = gtk_message_dialog_new (GTK_WINDOW (login_window),
|
||||
+ GTK_DIALOG_MODAL,
|
||||
+ GTK_MESSAGE_ERROR,
|
||||
+ GTK_BUTTONS_OK,
|
||||
+ _("Failed to restart computer"));
|
||||
+ if (polkit_action_equal (action, action2)) {
|
||||
+ gtk_message_dialog_format_secondary_text (dialog,
|
||||
+ _("You are not allowed to restart the computer "
|
||||
+ "because multiple users are logged in"));
|
||||
+ }
|
||||
+ gtk_dialog_run (GTK_DIALOG (dialog));
|
||||
+ gtk_widget_destroy (dialog);
|
||||
+
|
||||
+ polkit_action_unref (action);
|
||||
+ polkit_action_unref (action2);
|
||||
+
|
||||
+ g_error_free (error);
|
||||
+
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
xid = 0;
|
||||
pid = getpid ();
|
||||
|
||||
@@ -1128,14 +1178,41 @@ do_system_stop (GdmGreeterLoginWindow *l
|
||||
|
||||
if (dbus_g_error_has_name (error, "org.freedesktop.ConsoleKit.Manager.NotPrivileged")) {
|
||||
PolKitAction *action;
|
||||
+ PolKitAction *action2;
|
||||
+ PolKitResult result;
|
||||
+ GtkWidget *dialog;
|
||||
guint xid;
|
||||
pid_t pid;
|
||||
|
||||
xid = 0;
|
||||
pid = getpid ();
|
||||
|
||||
+ result = get_result_from_error (error);
|
||||
action = get_action_from_error (error);
|
||||
|
||||
+ if (result == POLKIT_RESULT_NO) {
|
||||
+ action2 = polkit_action_new ();
|
||||
+ polkit_action_set_action_id (action2,
|
||||
+ "org.freedesktop.consolekit.system.stop-multiple-users");
|
||||
+ dialog = gtk_message_dialog_new (GTK_WINDOW (login_window),
|
||||
+ GTK_DIALOG_MODAL,
|
||||
+ GTK_MESSAGE_ERROR,
|
||||
+ GTK_BUTTONS_OK,
|
||||
+ _("Failed to stop computer"));
|
||||
+ if (polkit_action_equal (action, action2)) {
|
||||
+ gtk_message_dialog_format_secondary_text (dialog,
|
||||
+ _("You are not allowed to stop the computer "
|
||||
+ "because multiple users are logged in"));
|
||||
+ }
|
||||
+ gtk_dialog_run (GTK_DIALOG (dialog));
|
||||
+ gtk_widget_destroy (dialog);
|
||||
+
|
||||
+ polkit_action_unref (action);
|
||||
+ polkit_action_unref (action2);
|
||||
+
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
g_error_free (error);
|
||||
error = NULL;
|
||||
res = polkit_gnome_auth_obtain (action,
|
8
gdm.spec
8
gdm.spec
@ -16,7 +16,7 @@
|
||||
Summary: The GNOME Display Manager
|
||||
Name: gdm
|
||||
Version: 2.21.10
|
||||
Release: 0.2008.04.04.1%{?dist}
|
||||
Release: 0.2008.04.04.2%{?dist}
|
||||
Epoch: 1
|
||||
License: GPLv2+
|
||||
Group: User Interface/X
|
||||
@ -75,6 +75,7 @@ BuildRequires: iso-codes-devel
|
||||
BuildRequires: gnome-panel-devel
|
||||
|
||||
Requires: audit-libs >= %{libauditver}
|
||||
Patch0: ck-multi.patch
|
||||
Patch99: gdm-2.21.8-fedora-logo.patch
|
||||
|
||||
%package user-switch-applet
|
||||
@ -94,7 +95,7 @@ multiple simulanteous logged in users.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%patch0 -p1 -b .ck-multi
|
||||
%patch99 -p1 -b .fedora-logo
|
||||
|
||||
%build
|
||||
@ -291,6 +292,9 @@ fi
|
||||
%{_datadir}/gnome-2.0/ui/GNOME_FastUserSwitchApplet.xml
|
||||
|
||||
%changelog
|
||||
* Sat Apr 5 2008 Matthias Clasen <mclasen@redhat.com> - 1:2.21.10-0.2008.04.04.2
|
||||
- Improve handling of CK error messages
|
||||
|
||||
* Sat Apr 5 2008 Ray Strode <rstrode@redhat.com> - 1:2.21.10-0.2008.04.04.1
|
||||
- Fix jump in animation for autologin
|
||||
- Fix crash if LANG="somethingbogus"
|
||||
|
Loading…
Reference in New Issue
Block a user