~ubuntu-branches/ubuntu/lucid/gdm/lucid

« back to all changes in this revision

Viewing changes to debian/patches/29_switch_user.patch

  • Committer: Bazaar Package Importer
  • Author(s): Robert Ancell
  • Date: 2010-04-13 15:43:37 UTC
  • Revision ID: james.westby@ubuntu.com-20100413154337-3e4bimubrwdsm2qu
Tags: 2.30.0-0ubuntu4
* debian/patches/29_switch_user.patch:
  - Deselect user when cancelling user switch (LP: #532531)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
## Description: add some description
 
2
## Origin/Author: add some origin or author
 
3
## Bug: bug URL
1
4
From 7e4878cea1504420911b7672f81f9221c6e1d65a Mon Sep 17 00:00:00 2001
2
5
From: Robert Ancell <robert.ancell@gmail.com>
3
6
Date: Wed, 13 Jan 2010 16:30:49 +1100
4
7
Subject: [PATCH] Add SwitchToUser() method which automatically selects that user in the greeter or switches to an already open session
5
8
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=606923
6
9
 
7
 
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-display.c gdm-2.29.4.new/daemon/gdm-display.c
8
 
--- gdm-2.29.4/daemon/gdm-display.c     2009-12-22 03:36:30.000000000 +1100
9
 
+++ gdm-2.29.4.new/daemon/gdm-display.c 2010-01-14 13:00:54.886674032 +1100
 
10
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-display.c gdm-2.30.0.new/daemon/gdm-display.c
 
11
--- gdm-2.30.0/daemon/gdm-display.c     2010-04-13 15:41:16.724247508 +0800
 
12
+++ gdm-2.30.0.new/daemon/gdm-display.c 2010-04-13 15:41:18.906768605 +0800
10
13
@@ -60,6 +60,7 @@
11
14
         time_t                creation_time;
12
15
         GTimer               *slave_timer;
93
96
                                          PROP_STATUS,
94
97
                                          g_param_spec_int ("status",
95
98
                                                            "status",
96
 
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-greeter-server.c gdm-2.29.4.new/daemon/gdm-greeter-server.c
97
 
--- gdm-2.29.4/daemon/gdm-greeter-server.c      2009-12-22 03:36:30.000000000 +1100
98
 
+++ gdm-2.29.4.new/daemon/gdm-greeter-server.c  2010-01-14 13:00:54.886674032 +1100
 
99
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-greeter-server.c gdm-2.30.0.new/daemon/gdm-greeter-server.c
 
100
--- gdm-2.30.0/daemon/gdm-greeter-server.c      2010-04-13 15:41:16.724247508 +0800
 
101
+++ gdm-2.30.0.new/daemon/gdm-greeter-server.c  2010-04-13 15:41:18.916747038 +0800
99
102
@@ -281,6 +281,14 @@
100
103
 }
101
104
 
121
124
                                "    <signal name=\"TimedLoginRequested\">\n"
122
125
                                "      <arg name=\"username\" type=\"s\"/>\n"
123
126
                                "      <arg name=\"delay\" type=\"i\"/>\n"
124
 
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-greeter-server.h gdm-2.29.4.new/daemon/gdm-greeter-server.h
125
 
--- gdm-2.29.4/daemon/gdm-greeter-server.h      2009-12-09 02:20:18.000000000 +1100
126
 
+++ gdm-2.29.4.new/daemon/gdm-greeter-server.h  2010-01-14 13:00:54.886674032 +1100
 
127
@@ -1107,7 +1118,7 @@
 
128
                                                               "display id",
 
129
                                                               NULL,
 
130
                                                               G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
 
131
-         g_object_class_install_property (object_class,
 
132
+        g_object_class_install_property (object_class,
 
133
                                          PROP_USER_NAME,
 
134
                                          g_param_spec_string ("user-name",
 
135
                                                               "user name",
 
136
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-greeter-server.h gdm-2.30.0.new/daemon/gdm-greeter-server.h
 
137
--- gdm-2.30.0/daemon/gdm-greeter-server.h      2010-04-13 15:41:16.724247508 +0800
 
138
+++ gdm-2.30.0.new/daemon/gdm-greeter-server.h  2010-04-13 15:41:18.916747038 +0800
127
139
@@ -95,6 +95,8 @@
128
140
 void                gdm_greeter_server_default_session_name_changed (GdmGreeterServer *greeter_server,
129
141
                                                                      const char       *text);
133
145
 void                gdm_greeter_server_request_timed_login   (GdmGreeterServer *greeter_server,
134
146
                                                               const char       *username,
135
147
                                                               int               delay);
136
 
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-local-display-factory.c gdm-2.29.4.new/daemon/gdm-local-display-factory.c
137
 
--- gdm-2.29.4/daemon/gdm-local-display-factory.c       2010-01-14 13:00:54.226667038 +1100
138
 
+++ gdm-2.29.4.new/daemon/gdm-local-display-factory.c   2010-01-14 13:02:10.804200067 +1100
139
 
@@ -501,6 +501,121 @@
 
148
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-local-display-factory.c gdm-2.30.0.new/daemon/gdm-local-display-factory.c
 
149
--- gdm-2.30.0/daemon/gdm-local-display-factory.c       2010-04-13 15:41:18.224255958 +0800
 
150
+++ gdm-2.30.0.new/daemon/gdm-local-display-factory.c   2010-04-13 15:41:18.916747038 +0800
 
151
@@ -495,6 +495,121 @@
140
152
         }
141
153
 }
142
154
 
258
270
 gboolean
259
271
 gdm_local_display_factory_create_product_display (GdmLocalDisplayFactory *factory,
260
272
                                                   const char             *parent_display_id,
261
 
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-local-display-factory.h gdm-2.29.4.new/daemon/gdm-local-display-factory.h
262
 
--- gdm-2.29.4/daemon/gdm-local-display-factory.h       2010-01-14 13:00:54.226667038 +1100
263
 
+++ gdm-2.29.4.new/daemon/gdm-local-display-factory.h   2010-01-14 13:00:54.886674032 +1100
 
273
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-local-display-factory.h gdm-2.30.0.new/daemon/gdm-local-display-factory.h
 
274
--- gdm-2.30.0/daemon/gdm-local-display-factory.h       2010-04-13 15:41:18.224255958 +0800
 
275
+++ gdm-2.30.0.new/daemon/gdm-local-display-factory.h   2010-04-13 15:41:18.916747038 +0800
264
276
@@ -64,6 +64,10 @@
265
277
 gboolean                   gdm_local_display_factory_create_transient_display (GdmLocalDisplayFactory *factory,
266
278
                                                                                char                  **id,
272
284
 
273
285
 gboolean                   gdm_local_display_factory_start_guest_session       (GdmLocalDisplayFactory *factory,
274
286
                                                                                 char                  **id,
275
 
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-local-display-factory.xml gdm-2.29.4.new/daemon/gdm-local-display-factory.xml
276
 
--- gdm-2.29.4/daemon/gdm-local-display-factory.xml     2010-01-14 13:00:54.226667038 +1100
277
 
+++ gdm-2.29.4.new/daemon/gdm-local-display-factory.xml 2010-01-14 13:00:54.886674032 +1100
 
287
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-local-display-factory.xml gdm-2.30.0.new/daemon/gdm-local-display-factory.xml
 
288
--- gdm-2.30.0/daemon/gdm-local-display-factory.xml     2010-04-13 15:41:18.224255958 +0800
 
289
+++ gdm-2.30.0.new/daemon/gdm-local-display-factory.xml 2010-04-13 15:41:18.916747038 +0800
278
290
@@ -12,5 +12,9 @@
279
291
     <method name="StartGuestSession">
280
292
       <arg name="id" direction="out" type="o"/>
285
297
+    </method>
286
298
   </interface>
287
299
 </node>
288
 
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-simple-slave.c gdm-2.29.4.new/daemon/gdm-simple-slave.c
289
 
--- gdm-2.29.4/daemon/gdm-simple-slave.c        2010-01-14 13:00:54.386666699 +1100
290
 
+++ gdm-2.29.4.new/daemon/gdm-simple-slave.c    2010-01-14 13:00:54.886674032 +1100
 
300
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-simple-slave.c gdm-2.30.0.new/daemon/gdm-simple-slave.c
 
301
--- gdm-2.30.0/daemon/gdm-simple-slave.c        2010-04-13 15:41:18.354254949 +0800
 
302
+++ gdm-2.30.0.new/daemon/gdm-simple-slave.c    2010-04-13 15:41:18.916747038 +0800
291
303
@@ -85,10 +85,13 @@
292
304
         guint              start_session_when_ready : 1;
293
305
         guint              waiting_to_start_session : 1;
302
314
 };
303
315
 
304
316
 static void     gdm_simple_slave_class_init     (GdmSimpleSlaveClass *klass);
305
 
@@ -506,6 +509,18 @@
306
 
                         g_warning ("Unable to send ready");
 
317
@@ -518,6 +521,16 @@
 
318
 }
 
319
 
 
320
 static void
 
321
+gdm_simple_slave_set_username (GdmSimpleSlave *slave,
 
322
+                               const char     *username)
 
323
+{
 
324
+        g_return_if_fail (GDM_IS_SIMPLE_SLAVE (slave));
 
325
+
 
326
+        g_free (slave->priv->username);
 
327
+        slave->priv->username = g_strdup (username);
 
328
+}
 
329
+
 
330
+static void
 
331
 on_session_conversation_started (GdmSession     *session,
 
332
                                  GdmSimpleSlave *slave)
 
333
 {
 
334
@@ -534,6 +547,19 @@
307
335
                 }
308
336
         }
309
 
+   
 
337
 
310
338
+        g_object_get (slave, "username", &username, NULL);
311
339
+        if (username) {
312
340
+                g_debug ("GdmSimpleSlave: **user '%s'", username);
313
341
+                if (slave->priv->greeter_server != NULL) {
314
342
+                        g_debug ("GdmSimpleSlave: begin login for user '%s'", username);
 
343
+                        gdm_simple_slave_set_username (slave, NULL);
315
344
+                        gdm_greeter_server_select_user (slave->priv->greeter_server, username);
316
345
+                }
317
346
+                g_free (username);
318
347
+                return;
319
348
+        }
320
349
+        g_debug ("GdmSimpleSlave: **nouser");
321
 
 
 
350
+
322
351
         enabled = FALSE;
323
352
         gdm_slave_get_timed_login_details (GDM_SLAVE (slave), &enabled, &username, &delay);
324
 
@@ -1272,12 +1287,29 @@
325
 
 }
326
 
 
327
 
 static void
328
 
+gdm_simple_slave_set_username (GdmSimpleSlave *slave,
329
 
+                               const char     *username)
330
 
+{
331
 
+        g_return_if_fail (GDM_IS_SIMPLE_SLAVE (slave));
332
 
+
333
 
+        g_free (slave->priv->username);
334
 
+        slave->priv->username = g_strdup (username);
335
 
+}
336
 
+
337
 
+static void
338
 
 gdm_simple_slave_set_property (GObject      *object,
339
 
                                guint          prop_id,
 
353
         if (! enabled) {
 
354
@@ -1338,7 +1364,14 @@
340
355
                                const GValue *value,
341
356
                                GParamSpec   *pspec)
342
357
 {
351
366
         default:
352
367
                 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
353
368
                 break;
354
 
@@ -1290,7 +1322,14 @@
 
369
@@ -1351,7 +1384,14 @@
355
370
                                GValue      *value,
356
371
                                GParamSpec *pspec)
357
372
 {
366
381
         default:
367
382
                 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
368
383
                 break;
369
 
@@ -1327,6 +1366,14 @@
 
384
@@ -1388,6 +1428,14 @@
370
385
 
371
386
         g_type_class_add_private (klass, sizeof (GdmSimpleSlavePrivate));
372
387
 
381
396
         dbus_g_object_type_install_info (GDM_TYPE_SIMPLE_SLAVE, &dbus_glib_gdm_simple_slave_object_info);
382
397
 }
383
398
 
384
 
@@ -1359,12 +1406,13 @@
 
399
@@ -1420,12 +1468,13 @@
385
400
 }
386
401
 
387
402
 GdmSlave *
396
411
                                NULL);
397
412
 
398
413
         return GDM_SLAVE (object);
399
 
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-simple-slave.h gdm-2.29.4.new/daemon/gdm-simple-slave.h
400
 
--- gdm-2.29.4/daemon/gdm-simple-slave.h        2009-12-09 02:20:18.000000000 +1100
401
 
+++ gdm-2.29.4.new/daemon/gdm-simple-slave.h    2010-01-14 13:00:54.886674032 +1100
 
414
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-simple-slave.h gdm-2.30.0.new/daemon/gdm-simple-slave.h
 
415
--- gdm-2.30.0/daemon/gdm-simple-slave.h        2010-04-13 15:41:16.724247508 +0800
 
416
+++ gdm-2.30.0.new/daemon/gdm-simple-slave.h    2010-04-13 15:41:18.916747038 +0800
402
417
@@ -48,7 +48,8 @@
403
418
 } GdmSimpleSlaveClass;
404
419
 
409
424
 
410
425
 G_END_DECLS
411
426
 
412
 
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/simple-slave-main.c gdm-2.29.4.new/daemon/simple-slave-main.c
413
 
--- gdm-2.29.4/daemon/simple-slave-main.c       2010-01-14 13:00:54.186666563 +1100
414
 
+++ gdm-2.29.4.new/daemon/simple-slave-main.c   2010-01-14 13:00:54.886674032 +1100
 
427
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/simple-slave-main.c gdm-2.30.0.new/daemon/simple-slave-main.c
 
428
--- gdm-2.30.0/daemon/simple-slave-main.c       2010-04-13 15:41:18.194248305 +0800
 
429
+++ gdm-2.30.0.new/daemon/simple-slave-main.c   2010-04-13 15:41:18.916747038 +0800
415
430
@@ -47,6 +47,7 @@
416
431
 #include "gdm-settings-direct.h"
417
432
 
441
456
         if (slave == NULL) {
442
457
                 goto out;
443
458
         }
444
 
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/data/gdm.conf.in gdm-2.29.4.new/data/gdm.conf.in
445
 
--- gdm-2.29.4/data/gdm.conf.in 2010-01-14 13:00:54.266675125 +1100
446
 
+++ gdm-2.29.4.new/data/gdm.conf.in     2010-01-14 13:00:54.886674032 +1100
 
459
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/data/gdm.conf.in gdm-2.30.0.new/data/gdm.conf.in
 
460
--- gdm-2.30.0/data/gdm.conf.in 2010-04-13 15:41:18.254257675 +0800
 
461
+++ gdm-2.30.0.new/data/gdm.conf.in     2010-04-13 15:41:18.916747038 +0800
447
462
@@ -74,6 +74,9 @@
448
463
            send_member="CreateTransientDisplay"/>
449
464
     <allow send_destination="org.gnome.DisplayManager"
454
469
            send_member="StartGuestSession"/>
455
470
           
456
471
     <allow send_destination="org.gnome.DisplayManager"
457
 
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/gui/simple-greeter/gdm-greeter-client.c gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-client.c
458
 
--- gdm-2.29.4/gui/simple-greeter/gdm-greeter-client.c  2009-12-22 03:36:30.000000000 +1100
459
 
+++ gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-client.c      2010-01-14 13:00:54.886674032 +1100
 
472
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/gui/simple-greeter/gdm-greeter-client.c gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-client.c
 
473
--- gdm-2.30.0/gui/simple-greeter/gdm-greeter-client.c  2010-04-13 15:41:16.724247508 +0800
 
474
+++ gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-client.c      2010-04-13 15:41:18.916747038 +0800
460
475
@@ -69,6 +69,7 @@
461
476
         DEFAULT_LANGUAGE_NAME_CHANGED,
462
477
         DEFAULT_LAYOUT_NAME_CHANGED,
507
522
         gdm_greeter_client_signals[TIMED_LOGIN_REQUESTED] =
508
523
                 g_signal_new ("timed-login-requested",
509
524
                               G_OBJECT_CLASS_TYPE (object_class),
510
 
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/gui/simple-greeter/gdm-greeter-client.h gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-client.h
511
 
--- gdm-2.29.4/gui/simple-greeter/gdm-greeter-client.h  2009-12-09 02:20:18.000000000 +1100
512
 
+++ gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-client.h      2010-01-14 13:00:54.886674032 +1100
 
525
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/gui/simple-greeter/gdm-greeter-client.h gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-client.h
 
526
--- gdm-2.30.0/gui/simple-greeter/gdm-greeter-client.h  2010-04-13 15:41:16.724247508 +0800
 
527
+++ gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-client.h      2010-04-13 15:41:18.916747038 +0800
513
528
@@ -66,6 +66,8 @@
514
529
                                                 const char        *language_name);
515
530
         void (* default_layout_name_changed) (GdmGreeterClient  *client,
519
534
         void (* timed_login_requested)   (GdmGreeterClient  *client,
520
535
                                           const char        *username,
521
536
                                           int                delay);
522
 
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/gui/simple-greeter/gdm-greeter-login-window.c gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-login-window.c
523
 
--- gdm-2.29.4/gui/simple-greeter/gdm-greeter-login-window.c    2010-01-14 13:00:54.316667091 +1100
524
 
+++ gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-login-window.c        2010-01-14 13:00:54.886674032 +1100
525
 
@@ -117,6 +117,8 @@
 
537
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/gui/simple-greeter/gdm-greeter-login-window.c gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-login-window.c
 
538
--- gdm-2.30.0/gui/simple-greeter/gdm-greeter-login-window.c    2010-04-13 15:41:18.294248302 +0800
 
539
+++ gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-login-window.c        2010-04-13 15:41:18.916747038 +0800
 
540
@@ -116,6 +116,8 @@
526
541
 
527
542
         guint            login_button_handler_id;
528
543
         guint            start_session_handler_id;
531
546
 };
532
547
 
533
548
 enum {
534
 
@@ -627,6 +629,24 @@
 
549
@@ -624,6 +626,24 @@
535
550
         return TRUE;
536
551
 }
537
552
 
556
571
 void
557
572
 gdm_greeter_login_window_request_timed_login (GdmGreeterLoginWindow *login_window,
558
573
                                               const char            *username,
559
 
@@ -839,6 +859,11 @@
 
574
@@ -836,6 +856,11 @@
560
575
         adjust_other_login_visibility (login_window);
561
576
 
562
577
         gdm_chooser_widget_activate_if_one_item (GDM_CHOOSER_WIDGET (login_window->priv->user_chooser));
568
583
 }
569
584
 
570
585
 static void
571
 
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/gui/simple-greeter/gdm-greeter-login-window.h gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-login-window.h
572
 
--- gdm-2.29.4/gui/simple-greeter/gdm-greeter-login-window.h    2009-12-09 02:20:18.000000000 +1100
573
 
+++ gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-login-window.h        2010-01-14 13:00:54.886674032 +1100
 
586
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/gui/simple-greeter/gdm-greeter-login-window.h gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-login-window.h
 
587
--- gdm-2.30.0/gui/simple-greeter/gdm-greeter-login-window.h    2010-04-13 15:41:16.734247730 +0800
 
588
+++ gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-login-window.h        2010-04-13 15:41:18.916747038 +0800
574
589
@@ -76,6 +76,8 @@
575
590
 gboolean            gdm_greeter_login_window_problem            (GdmGreeterLoginWindow *login_window,
576
591
                                                                  const char *text);
580
595
 void               gdm_greeter_login_window_request_timed_login (GdmGreeterLoginWindow *login_window,
581
596
                                                                  const char            *username,
582
597
                                                                  int                    delay);
583
 
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/gui/simple-greeter/gdm-greeter-session.c gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-session.c
584
 
--- gdm-2.29.4/gui/simple-greeter/gdm-greeter-session.c 2010-01-14 13:00:54.176672276 +1100
585
 
+++ gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-session.c     2010-01-14 13:00:54.886674032 +1100
 
598
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/gui/simple-greeter/gdm-greeter-session.c gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-session.c
 
599
--- gdm-2.30.0/gui/simple-greeter/gdm-greeter-session.c 2010-04-13 15:41:18.184247662 +0800
 
600
+++ gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-session.c     2010-04-13 15:41:18.916747038 +0800
586
601
@@ -153,6 +153,15 @@
587
602
 }
588
603