diff --git a/.cvsignore b/.cvsignore index 3e76f74..c2b3d4b 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1 @@ -gdm-2.19.5.tar.bz2 -fedora-faces-20070319.tar.bz2 +gdm-2.19.6.tar.bz2 diff --git a/gdm-2.19.6-pass-ats-to-session.patch b/gdm-2.19.6-pass-ats-to-session.patch new file mode 100644 index 0000000..793a83e --- /dev/null +++ b/gdm-2.19.6-pass-ats-to-session.patch @@ -0,0 +1,265 @@ +diff -up gdm-2.19.6/gui/gdmlogin.c.pass-ats-to-session gdm-2.19.6/gui/gdmlogin.c +--- gdm-2.19.6/gui/gdmlogin.c.pass-ats-to-session 2007-08-15 23:16:09.000000000 -0400 ++++ gdm-2.19.6/gui/gdmlogin.c 2007-08-15 23:16:09.000000000 -0400 +@@ -1570,6 +1570,19 @@ process_operation (guchar op_code, + fflush (stdout); + break; + ++ case GDM_A11Y: ++ { ++ const char *ats_launched; ++ /* print out the assistive technologies that we've started for the user */ ++ ats_launched = g_getenv ("GDM_ATS"); ++ if (ats_launched != NULL) ++ printf ("%c%s\n", STX, ats_launched); ++ else ++ printf ("%c\n", STX); ++ fflush (stdout); ++ break; ++ } ++ + case GDM_LANG: + gdm_lang_op_lang (args); + break; +diff -up gdm-2.19.6/gui/modules/dwellmouselistener.c.pass-ats-to-session gdm-2.19.6/gui/modules/dwellmouselistener.c +--- gdm-2.19.6/gui/modules/dwellmouselistener.c.pass-ats-to-session 2007-08-15 14:14:07.000000000 -0400 ++++ gdm-2.19.6/gui/modules/dwellmouselistener.c 2007-08-15 23:25:29.000000000 -0400 +@@ -601,11 +601,33 @@ leave_enter_emission_hook (GSignalInvoca + G_CALLBACK (gtk_widget_destroy), NULL); + gtk_widget_show (dialog); + } else { ++ const char *at_name; ++ const char *ats_launched; + GdkCursor *cursor = gdk_cursor_new (GDK_WATCH); + gdk_window_set_cursor (gdk_get_default_root_window (), + cursor); + gdk_cursor_unref (cursor); + g_timeout_add (2000, change_cursor_back, NULL); ++ ++ at_name = strstr (action, "#AT_TYPE="); ++ if (at_name != NULL) { ++ int i; ++ char **v; ++ at_name += 9; ++ v = g_strsplit (at_name, " ", 0); ++ for (i = 0; v[i] != NULL; i++) { ++ ats_launched = g_getenv ("GDM_ATS"); ++ if (ats_launched == NULL) { ++ g_setenv ("GDM_ATS", v[i], TRUE); ++ } else if (strstr (ats_launched, v[i]) == NULL) { ++ char *s; ++ s = g_strdup_printf ("%s %s", ats_launched, v[i]); ++ g_setenv ("GDM_ATS", s, TRUE); ++ g_free (s); ++ } ++ } ++ g_strfreev (v); ++ } + } + } + } +diff -up gdm-2.19.6/gui/modules/AccessKeyMouseEvents.in.pass-ats-to-session gdm-2.19.6/gui/modules/AccessKeyMouseEvents.in +--- gdm-2.19.6/gui/modules/AccessKeyMouseEvents.in.pass-ats-to-session 2007-08-15 14:14:07.000000000 -0400 ++++ gdm-2.19.6/gui/modules/AccessKeyMouseEvents.in 2007-08-15 23:16:09.000000000 -0400 +@@ -78,14 +78,14 @@ + # + # press ctrl-s for 1 second to launch orca in speech mode + # +-s 1 1000 10000 @AT_BINDIR@/orca -n -d main-window ++s 1 1000 10000 @AT_BINDIR@/orca -n -d main-window #AT_TYPE=screenreader + + # press ctrl-m for 1 second to launch orca in mag mode + # +-m 1 1000 10000 @AT_BINDIR@/orca -n -d main-window -d speech -e magnifier ++m 1 1000 10000 @AT_BINDIR@/orca -n -d main-window -d speech -e magnifier #AT_TYPE=magnifier + + # press ctrl-o or ctrl-g for 1 second to launch orca in speech and mag mode + # +-o 1 1000 10000 @AT_BINDIR@/orca -n -d main-window -e magnifier +-g 1 1000 10000 @AT_BINDIR@/orca -n -d main-window -e magnifier ++o 1 1000 10000 @AT_BINDIR@/orca -n -d main-window -e magnifier #AT_TYPE=screenreader magnifier ++g 1 1000 10000 @AT_BINDIR@/orca -n -d main-window -e magnifier #AT_TYPE=screenreader magnifier + +diff -up gdm-2.19.6/gui/modules/AccessDwellMouseEvents.in.pass-ats-to-session gdm-2.19.6/gui/modules/AccessDwellMouseEvents.in +--- gdm-2.19.6/gui/modules/AccessDwellMouseEvents.in.pass-ats-to-session 2007-08-15 14:14:07.000000000 -0400 ++++ gdm-2.19.6/gui/modules/AccessDwellMouseEvents.in 2007-08-15 23:16:09.000000000 -0400 +@@ -38,10 +38,10 @@ + # Support several different options for different user needs. Note these + # gestures all start by moving the mouse into the top window border. + # +-TBLR I 10000 @AT_BINDIR@/gok --login --access-method=dwellselection +-TLBR I 10000 @AT_BINDIR@/gok --login --access-method=automaticscanning --scan-action=switch1 --select-action=switch1 +-TRBL I 10000 @AT_BINDIR@/gok --login --access-method=inversescanning --scan-action=switch1 --select-action=switch2 +-TBRL I 10000 @AT_BINDIR@/gok --login --access-method=automaticscanning --scan-action=switch3 --select-action=switch3 ++TBLR I 10000 @AT_BINDIR@/gok --login --access-method=dwellselection #AT_TYPE=onscreenkeyboard ++TLBR I 10000 @AT_BINDIR@/gok --login --access-method=automaticscanning --scan-action=switch1 --select-action=switch1 #AT_TYPE=onscreenkeyboard ++TRBL I 10000 @AT_BINDIR@/gok --login --access-method=inversescanning --scan-action=switch1 --select-action=switch2 #AT_TYPE=onscreenkeyboard ++TBRL I 10000 @AT_BINDIR@/gok --login --access-method=automaticscanning --scan-action=switch3 --select-action=switch3 #AT_TYPE=onscreenkeyboard + + # AT Program - ORCA + # +@@ -50,13 +50,13 @@ TBRL I 10000 @AT_BINDIR@/gok --login + # + # Speech + # +-BTRL I 10000 @AT_BINDIR@/orca -n -d main-window ++BTRL I 10000 @AT_BINDIR@/orca -n -d main-window #AT_TYPE=screenreader + + # Magnifier + # +-BTLR I 10000 @AT_BINDIR@/orca -n -d main-window -d speech -e magnifier ++BTLR I 10000 @AT_BINDIR@/orca -n -d main-window -d speech -e magnifier #AT_TYPE=magnifier + + # Speech and Magnifier + # +-BRTL I 10000 @AT_BINDIR@/orca -n -d main-window -e magnifier ++BRTL I 10000 @AT_BINDIR@/orca -n -d main-window -e magnifier #AT_TYPE=screenreader magnifier + +diff -up gdm-2.19.6/gui/modules/keymouselistener.c.pass-ats-to-session gdm-2.19.6/gui/modules/keymouselistener.c +--- gdm-2.19.6/gui/modules/keymouselistener.c.pass-ats-to-session 2007-08-15 14:14:07.000000000 -0400 ++++ gdm-2.19.6/gui/modules/keymouselistener.c 2007-08-15 23:16:09.000000000 -0400 +@@ -953,6 +953,8 @@ gestures_filter (GdkXEvent *gdk_xevent, + NULL); + gtk_widget_show (dialog); + } else { ++ char *at_name; ++ const char *ats_launched; + GdkCursor *cursor = gdk_cursor_new (GDK_WATCH); + gdk_window_set_cursor (gdk_get_default_root_window (), + cursor); +@@ -960,6 +962,26 @@ gestures_filter (GdkXEvent *gdk_xevent, + g_timeout_add (2000, + change_cursor_back, + NULL); ++ ++ at_name = strstr (action, "#AT_TYPE="); ++ if (at_name != NULL) { ++ int i; ++ char **v; ++ at_name += 9; ++ v = g_strsplit (at_name, " ", 0); ++ for (i = 0; v[i] != NULL; i++) { ++ ats_launched = g_getenv ("GDM_ATS"); ++ if (ats_launched == NULL) { ++ g_setenv ("GDM_ATS", v[i], TRUE); ++ } else if (strstr (ats_launched, v[i]) == NULL) { ++ char *s; ++ s = g_strdup_printf ("%s %s", ats_launched, v[i]); ++ g_setenv ("GDM_ATS", s, TRUE); ++ g_free (s); ++ } ++ } ++ g_strfreev (v); ++ } + } + } + return GDK_FILTER_CONTINUE; +diff -up gdm-2.19.6/gui/greeter/greeter.c.pass-ats-to-session gdm-2.19.6/gui/greeter/greeter.c +--- gdm-2.19.6/gui/greeter/greeter.c.pass-ats-to-session 2007-08-15 23:16:08.000000000 -0400 ++++ gdm-2.19.6/gui/greeter/greeter.c 2007-08-15 23:16:09.000000000 -0400 +@@ -390,6 +390,19 @@ process_operation (guchar op_code, + g_free (session); + break; + ++ case GDM_A11Y: ++ { ++ const char *ats_launched; ++ /* print out the assistive technologies that we've started for the user */ ++ ats_launched = g_getenv ("GDM_ATS"); ++ if (ats_launched != NULL) ++ printf ("%c%s\n", STX, ats_launched); ++ else ++ printf ("%c\n", STX); ++ fflush (stdout); ++ break; ++ } ++ + case GDM_LANG: + gdm_lang_op_lang (args); + break; +diff -up gdm-2.19.6/daemon/gdm-socket-protocol.h.pass-ats-to-session gdm-2.19.6/daemon/gdm-socket-protocol.h +--- gdm-2.19.6/daemon/gdm-socket-protocol.h.pass-ats-to-session 2007-08-15 23:16:08.000000000 -0400 ++++ gdm-2.19.6/daemon/gdm-socket-protocol.h 2007-08-15 23:16:09.000000000 -0400 +@@ -41,6 +41,7 @@ + #define GDM_PROMPT 'N' + #define GDM_SESS 'G' + #define GDM_LANG '&' ++#define GDM_A11Y 'Z' + #define GDM_SSESS 'C' + #define GDM_SLANG 'R' + #define GDM_SETLANG 'L' +diff -up gdm-2.19.6/daemon/slave.c.pass-ats-to-session gdm-2.19.6/daemon/slave.c +--- gdm-2.19.6/daemon/slave.c.pass-ats-to-session 2007-08-15 23:16:08.000000000 -0400 ++++ gdm-2.19.6/daemon/slave.c 2007-08-15 23:16:09.000000000 -0400 +@@ -3575,6 +3575,7 @@ session_child_run (struct passwd *pwent, + const char *session, + const char *save_session, + const char *language, ++ const char *a11y_ats, + const char *gnome_session, + gboolean usrcfgok, + gboolean savesess, +@@ -3667,6 +3668,9 @@ session_child_run (struct passwd *pwent, + } + #endif + g_setenv ("PWD", home_dir, TRUE); ++ if (a11y_ats != NULL) { ++ g_setenv ("GDM_ATS", a11y_ats, TRUE); ++ } + g_setenv ("GDMSESSION", session, TRUE); + g_setenv ("DESKTOP_SESSION", session, TRUE); + g_setenv ("SHELL", pwent->pw_shell, TRUE); +@@ -4454,6 +4458,7 @@ gdm_slave_session_start (void) + struct passwd *pwent; + const char *home_dir = NULL; + char *save_session = NULL, *session = NULL, *language = NULL, *usrsess, *usrlang; ++ char *a11y_ats = NULL; + char *gnome_session = NULL; + #ifdef WITH_CONSOLE_KIT + char *ck_session_cookie; +@@ -4622,9 +4627,19 @@ gdm_slave_session_start (void) + g_free (usrlang); + return; + } ++ ++ a11y_ats = gdm_slave_greeter_ctl (GDM_A11Y, NULL); ++ if (a11y_ats != NULL && ++ strcmp (a11y_ats, GDM_RESPONSE_CANCEL) == 0) { ++ gdm_debug ("User canceled login"); ++ gdm_verify_cleanup (d); ++ session_started = FALSE; ++ return; ++ } + } else { + session = g_strdup (usrsess); + language = g_strdup (usrlang); ++ a11y_ats = NULL; + } + + tmp = gdm_strip_extension (session, ".desktop"); +@@ -4645,10 +4660,15 @@ gdm_slave_session_start (void) + language = NULL; + } + ++ if G_LIKELY (ve_string_empty (a11y_ats)) { ++ g_free (a11y_ats); ++ a11y_ats = NULL; ++ } ++ + g_free (usrsess); + +- gdm_debug ("Initial setting: session: '%s' language: '%s'\n", +- session, ve_sure_string (language)); ++ gdm_debug ("Initial setting: session: '%s' language: '%s'i ATs enabled in gdm: '%s'\n", ++ session, ve_sure_string (language), ve_sure_string (a11y_ats)); + + /* save this session as the users session */ + save_session = g_strdup (session); +@@ -4840,6 +4860,7 @@ gdm_slave_session_start (void) + session, + save_session, + lang, ++ a11y_ats, + gnome_session, + usrcfgok, + savesess, diff --git a/gdm.spec b/gdm.spec index b0f3f75..d024b02 100644 --- a/gdm.spec +++ b/gdm.spec @@ -16,8 +16,8 @@ Summary: The GNOME Display Manager Name: gdm -Version: 2.19.5 -Release: 9%{?dist} +Version: 2.19.6 +Release: 1%{?dist} Epoch: 1 License: GPLv2+ Group: User Interface/X @@ -48,10 +48,7 @@ Patch29: gdm-2.17.7-greeter.patch Patch32: gdm-2.19.1-a11y-fixes-for-themed-greeter.patch # http://bugzilla.gnome.org/show_bug.cgi?id=411501 -Patch33: gdm-2.19.1-pass-ats-to-session.patch - -# http://bugzilla.gnome.org/show_bug.cgi?id=457998 -Patch34: gdm-2.19.5-dont-warp-pointer-to-stylus.patch +Patch33: gdm-2.19.6-pass-ats-to-session.patch # make gdmsetup work with consolehelper Patch35: gdmsetup-path.patch @@ -138,7 +135,6 @@ Extra icons / faces for the GNOME Display Manager. %patch29 -p0 -b .greeter %patch32 -p1 -b .a11y-fixes %patch33 -p1 -b .pass-ats-to-session -%patch34 -p1 -b .dont-warp-pointer-to-stylus %patch35 -p1 -b .gdmsetup-path %patch100 -p1 -b .change-defaults @@ -357,6 +353,9 @@ fi %{_datadir}/pixmaps/faces/extras/*.jpg %changelog +* Wed Aug 15 2007 Matthias Clasen - 1:2.19.6-1 +- Update to 2.19.6 + * Sun Aug 12 2007 Adam Jackson 1:2.19.5-9 - Remove the filereq on /etc/pam.d/system-auth, pam alone is sufficient. - Bump the pam requirement to 0.99, 0.75 is ancient. diff --git a/sources b/sources index b8dea7e..865b187 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -7c3afeb0b370218ee1291be1d560f5d8 gdm-2.19.5.tar.bz2 -7387935ad09f746889b58bd69bf815e1 fedora-faces-20070319.tar.bz2 +89ffb6d595f82f9d04d68121b81c697b gdm-2.19.6.tar.bz2