diff -r -C5 gnome-terminal-2.22.2/src/gnome-terminal.glade2 gnome-terminal-2.22.2-r1/src/gnome-terminal.glade2
*** gnome-terminal-2.22.2/src/gnome-terminal.glade2	2008-06-13 10:48:36.000000000 -0700
--- gnome-terminal-2.22.2-r1/src/gnome-terminal.glade2	2008-06-13 11:52:19.000000000 -0700
***************
*** 3437,3447 ****
  		  </child>
  
  		  <child>
  		    <widget class="GtkTable" id="table27">
  		      <property name="visible">True</property>
! 		      <property name="n_rows">4</property>
  		      <property name="n_columns">3</property>
  		      <property name="homogeneous">False</property>
  		      <property name="row_spacing">6</property>
  		      <property name="column_spacing">12</property>
  
--- 3437,3447 ----
  		  </child>
  
  		  <child>
  		    <widget class="GtkTable" id="table27">
  		      <property name="visible">True</property>
! 		      <property name="n_rows">5</property>
  		      <property name="n_columns">3</property>
  		      <property name="homogeneous">False</property>
  		      <property name="row_spacing">6</property>
  		      <property name="column_spacing">12</property>
  
***************
*** 3696,3705 ****
--- 3696,3741 ----
  			  <property name="y_options"></property>
  			</packing>
  		      </child>
  
  		      <child>
+ 			<widget class="GtkAlignment" id="alignment12">
+ 			  <property name="visible">True</property>
+ 			  <property name="xalign">1.49012002737e-08</property>
+ 			  <property name="yalign">0.5</property>
+ 			  <property name="xscale">0</property>
+ 			  <property name="yscale">1</property>
+ 			  <property name="top_padding">0</property>
+ 			  <property name="bottom_padding">0</property>
+ 			  <property name="left_padding">0</property>
+ 			  <property name="right_padding">0</property>
+ 
+ 			  <child>
+ 			    <widget class="GtkCheckButton" id="alternate-screen-scroll-checkbutton">
+ 			      <property name="visible">True</property>
+ 			      <property name="can_focus">True</property>
+ 			      <property name="label" translatable="yes">Use keystrokes to scroll on _alternate screen</property>
+ 			      <property name="use_underline">True</property>
+ 			      <property name="relief">GTK_RELIEF_NORMAL</property>
+ 			      <property name="focus_on_click">True</property>
+ 			      <property name="active">False</property>
+ 			      <property name="inconsistent">False</property>
+ 			      <property name="draw_indicator">True</property>
+ 			    </widget>
+ 			  </child>
+ 			</widget>
+ 			<packing>
+ 			  <property name="left_attach">0</property>
+ 			  <property name="right_attach">3</property>
+ 			  <property name="top_attach">4</property>
+ 			  <property name="bottom_attach">5</property>
+ 			  <property name="x_options">fill</property>
+ 			  <property name="y_options"></property>
+ 			</packing>
+ 		      </child>
+ 
+ 		      <child>
  			<widget class="GtkComboBox" id="scrollbar-position-combobox">
  			  <property name="visible">True</property>
  			  <property name="items" translatable="yes">On the left side
  On the right side
  Disabled</property>
diff -r -C5 gnome-terminal-2.22.2/src/gnome-terminal.schemas.in gnome-terminal-2.22.2-r1/src/gnome-terminal.schemas.in
*** gnome-terminal-2.22.2/src/gnome-terminal.schemas.in	2008-06-13 10:48:36.000000000 -0700
--- gnome-terminal-2.22.2-r1/src/gnome-terminal.schemas.in	2008-06-13 12:00:58.000000000 -0700
***************
*** 324,333 ****
--- 324,348 ----
           </long>
        </locale>
      </schema>
  
      <schema>
+       <key>/schemas/apps/gnome-terminal/profiles/Default/alternate_screen_scroll</key>
+       <applyto>/apps/gnome-terminal/profiles/Default/alternate_screen_scroll</applyto>
+       <owner>gnome-terminal</owner>
+       <type>bool</type>
+       <default>true</default>
+       <locale name="C">
+          <short>Whether to use keystrokes for alternate screen scrolling</short>
+          <long>
+           If true, use Up/Down keystrokes for scrolling when using alternate screen
+ 	  or when scrolling is restricted.
+          </long>
+       </locale>
+     </schema>
+ 
+     <schema>
        <key>/schemas/apps/gnome-terminal/profiles/Default/exit_action</key>
        <applyto>/apps/gnome-terminal/profiles/Default/exit_action</applyto>
        <owner>gnome-terminal</owner>
        <type>string</type>
        <default>close</default>
diff -r -C5 gnome-terminal-2.22.2/src/profile-editor.c gnome-terminal-2.22.2-r1/src/profile-editor.c
*** gnome-terminal-2.22.2/src/profile-editor.c	2008-06-13 10:48:36.000000000 -0700
--- gnome-terminal-2.22.2-r1/src/profile-editor.c	2008-06-13 11:12:04.000000000 -0700
***************
*** 102,111 ****
--- 102,113 ----
                                                                TerminalProfile *profile);
  static void       profile_editor_update_scroll_on_keystroke  (GtkWidget       *widget,
                                                                TerminalProfile *profile);
  static void       profile_editor_update_scroll_on_output     (GtkWidget       *widget,
                                                                TerminalProfile *profile);
+ static void       profile_editor_update_alternate_screen_scroll (GtkWidget       *widget,
+                                                                  TerminalProfile *profile);
  static void       profile_editor_update_exit_action          (GtkWidget       *widget,
                                                                TerminalProfile *profile);
  static void       profile_editor_update_login_shell          (GtkWidget       *widget,
                                                                TerminalProfile *profile);
  static void       profile_editor_update_update_records       (GtkWidget       *widget,
***************
*** 285,294 ****
--- 287,299 ----
      profile_editor_update_scroll_on_keystroke (editor, profile);
  
    if (mask->scroll_on_output)
      profile_editor_update_scroll_on_output (editor, profile);
  
+   if (mask->alternate_screen_scroll)
+     profile_editor_update_alternate_screen_scroll (editor, profile);
+ 
    if (mask->exit_action)
      profile_editor_update_exit_action (editor, profile);
  
    if (mask->login_shell)
      profile_editor_update_login_shell (editor, profile);
***************
*** 522,531 ****
--- 527,544 ----
    terminal_profile_set_scroll_on_output (profile,
                                           gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbutton)));
  }
  
  static void
+ alternate_screen_scroll_toggled (GtkWidget       *checkbutton,
+                           TerminalProfile *profile)
+ {
+   terminal_profile_set_alternate_screen_scroll (profile,
+                                          gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbutton)));
+ }
+ 
+ static void
  exit_action_changed (GtkWidget       *combo_box,
                       TerminalProfile *profile)
  {
    int i;
    
***************
*** 1080,1089 ****
--- 1093,1108 ----
        profile_editor_update_scroll_on_output (editor, profile);
        g_signal_connect (G_OBJECT (w), "toggled",
                          G_CALLBACK (scroll_on_output_toggled),
                          profile);
  
+       w = glade_xml_get_widget (xml, "alternate-screen-scroll-checkbutton");
+       profile_editor_update_alternate_screen_scroll (editor, profile);
+       g_signal_connect (G_OBJECT (w), "toggled",
+                         G_CALLBACK (alternate_screen_scroll_toggled),
+                         profile);
+ 
        w = glade_xml_get_widget (xml, "exit-action-combobox");
        profile_editor_update_exit_action (editor, profile);
        g_signal_connect (G_OBJECT (w), "changed",
                          G_CALLBACK (exit_action_changed),
                          profile);
***************
*** 1435,1444 ****
--- 1454,1466 ----
                     mask->scroll_on_keystroke);
  
    set_insensitive (editor, "scroll-on-output-checkbutton",
                     mask->scroll_on_output);
  
+   set_insensitive (editor, "alternate-screen-scroll-checkbutton",
+                    mask->alternate_screen_scroll);
+ 
    set_insensitive (editor, "exit-action-combobox",
                     mask->exit_action);
  
    set_insensitive (editor, "login-shell-checkbutton",
                     mask->login_shell);
***************
*** 1699,1708 ****
--- 1721,1742 ----
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w),
                                  terminal_profile_get_scroll_on_output (profile));
  }
  
  static void
+ profile_editor_update_alternate_screen_scroll (GtkWidget       *editor,
+                                                TerminalProfile *profile)
+ {
+   GtkWidget *w;
+ 
+   w = profile_editor_get_widget (editor, "alternate-screen-scroll-checkbutton");
+   
+   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w),
+                                 terminal_profile_get_alternate_screen_scroll (profile));
+ }
+ 
+ static void
  profile_editor_update_exit_action (GtkWidget       *editor,
                                     TerminalProfile *profile)
  {
    GtkWidget *w;
  
diff -r -C5 gnome-terminal-2.22.2/src/terminal-profile.c gnome-terminal-2.22.2-r1/src/terminal-profile.c
*** gnome-terminal-2.22.2/src/terminal-profile.c	2008-06-13 10:48:36.000000000 -0700
--- gnome-terminal-2.22.2-r1/src/terminal-profile.c	2008-06-13 11:04:13.000000000 -0700
***************
*** 49,58 ****
--- 49,59 ----
  #define KEY_WORD_CHARS "word_chars"
  #define KEY_SCROLLBAR_POSITION "scrollbar_position"
  #define KEY_SCROLLBACK_LINES "scrollback_lines"
  #define KEY_SCROLL_ON_KEYSTROKE "scroll_on_keystroke"
  #define KEY_SCROLL_ON_OUTPUT "scroll_on_output"
+ #define KEY_ALTERNATE_SCREEN_SCROLL "alternate_screen_scroll"
  #define KEY_EXIT_ACTION "exit_action"
  #define KEY_LOGIN_SHELL "login_shell"
  #define KEY_UPDATE_RECORDS "update_records"
  #define KEY_USE_CUSTOM_COMMAND "use_custom_command"
  #define KEY_CUSTOM_COMMAND "custom_command"
***************
*** 116,125 ****
--- 117,127 ----
    guint default_show_menubar : 1;
    guint allow_bold : 1;
    guint silent_bell : 1;
    guint scroll_on_keystroke : 1;
    guint scroll_on_output : 1;
+   guint alternate_screen_scroll : 1;
    guint login_shell : 1;
    guint update_records : 1;
    guint use_custom_command : 1;
    guint scroll_background : 1;
    guint use_theme_colors : 1;
***************
*** 536,545 ****
--- 538,577 ----
                           NULL);
  
    g_free (key);
  }
  
+ 
+ gboolean
+ terminal_profile_get_alternate_screen_scroll (TerminalProfile  *profile)
+ {
+     g_return_val_if_fail (TERMINAL_IS_PROFILE (profile), FALSE);
+ 
+   return profile->priv->alternate_screen_scroll;
+ }
+ 
+ 
+ void
+ terminal_profile_set_alternate_screen_scroll (TerminalProfile  *profile,
+ 					      gboolean          setting)
+ {
+   char *key;
+ 
+   RETURN_IF_NOTIFYING (profile);
+   
+   key = gconf_concat_dir_and_key (profile->priv->profile_dir,
+                                   KEY_ALTERNATE_SCREEN_SCROLL);
+   
+   gconf_client_set_bool (profile->priv->conf,
+                          key,
+                          setting,
+                          NULL);
+ 
+   g_free (key);
+ }
+ 
+ 
  TerminalScrollbarPosition
  terminal_profile_get_scrollbar_position (TerminalProfile  *profile)
  {
    g_return_val_if_fail (TERMINAL_IS_PROFILE (profile), 0);
  
***************
*** 1917,1926 ****
--- 1949,1959 ----
    UPDATE_STRING  (KEY_WORD_CHARS,           word_chars);
    UPDATE_STRING  (KEY_SCROLLBAR_POSITION,   scrollbar_position);
    UPDATE_INTEGER (KEY_SCROLLBACK_LINES,     scrollback_lines);
    UPDATE_BOOLEAN (KEY_SCROLL_ON_KEYSTROKE,  scroll_on_keystroke);
    UPDATE_BOOLEAN (KEY_SCROLL_ON_OUTPUT,     scroll_on_output);
+   UPDATE_BOOLEAN (KEY_ALTERNATE_SCREEN_SCROLL, alternate_screen_scroll);
    UPDATE_STRING  (KEY_EXIT_ACTION,          exit_action);
    UPDATE_BOOLEAN (KEY_LOGIN_SHELL,          login_shell);
    UPDATE_BOOLEAN (KEY_UPDATE_RECORDS,       update_records);
    UPDATE_BOOLEAN (KEY_USE_CUSTOM_COMMAND,   use_custom_command);
    UPDATE_STRING  (KEY_CUSTOM_COMMAND,       custom_command);
***************
*** 2062,2071 ****
--- 2095,2105 ----
       UPDATE_STRING  (KEY_WORD_CHARS,             word_chars,             NULL);
       UPDATE_STRING  (KEY_SCROLLBAR_POSITION,     scrollbar_position,     NULL);
       UPDATE_INTEGER (KEY_SCROLLBACK_LINES,       scrollback_lines,       profile->priv->scrollback_lines);
       UPDATE_BOOLEAN (KEY_SCROLL_ON_KEYSTROKE, 	 scroll_on_keystroke,    FALSE);
       UPDATE_BOOLEAN (KEY_SCROLL_ON_OUTPUT,       scroll_on_output,       FALSE);
+      UPDATE_BOOLEAN (KEY_ALTERNATE_SCREEN_SCROLL, alternate_screen_scroll, FALSE);
       UPDATE_STRING  (KEY_EXIT_ACTION,            exit_action,            NULL);
       UPDATE_BOOLEAN (KEY_LOGIN_SHELL,            login_shell,            FALSE);
       UPDATE_BOOLEAN (KEY_UPDATE_RECORDS,         update_records,         FALSE);
       UPDATE_BOOLEAN (KEY_USE_CUSTOM_COMMAND,     use_custom_command,     FALSE);
       UPDATE_STRING  (KEY_CUSTOM_COMMAND,         custom_command,         NULL);
***************
*** 2660,2669 ****
--- 2694,2714 ----
                           base_profile->priv->scroll_on_output,
                           &err);
  
    BAIL_OUT_CHECK ();
  
+   g_free (key);
+   key = gconf_concat_dir_and_key (profile_dir,
+                                   KEY_ALTERNATE_SCREEN_SCROLL);
+ 
+   gconf_client_set_bool (base_profile->priv->conf,
+                          key,
+                          base_profile->priv->alternate_screen_scroll,
+                          &err);
+ 
+   BAIL_OUT_CHECK ();
+ 
  
    g_free (key);
    key = gconf_concat_dir_and_key (profile_dir,
                                    KEY_EXIT_ACTION);
  
diff -r -C5 gnome-terminal-2.22.2/src/terminal-profile.h gnome-terminal-2.22.2-r1/src/terminal-profile.h
*** gnome-terminal-2.22.2/src/terminal-profile.h	2008-06-13 10:48:36.000000000 -0700
--- gnome-terminal-2.22.2-r1/src/terminal-profile.h	2008-06-13 11:07:16.000000000 -0700
***************
*** 45,54 ****
--- 45,55 ----
    unsigned int word_chars : 1;
    unsigned int scrollbar_position : 1;
    unsigned int scrollback_lines : 1;
    unsigned int scroll_on_keystroke : 1;
    unsigned int scroll_on_output : 1;
+   unsigned int alternate_screen_scroll : 1;
    unsigned int exit_action : 1;
    unsigned int login_shell : 1;
    unsigned int update_records : 1;
    unsigned int use_custom_command : 1;
    unsigned int custom_command : 1;
***************
*** 156,165 ****
--- 157,167 ----
  TerminalTitleMode         terminal_profile_get_title_mode           (TerminalProfile *profile);
  gboolean                  terminal_profile_get_forgotten            (TerminalProfile *profile);
  gboolean                  terminal_profile_get_default_show_menubar (TerminalProfile *profile);
  gboolean                  terminal_profile_get_scroll_on_keystroke  (TerminalProfile *profile);
  gboolean                  terminal_profile_get_scroll_on_output     (TerminalProfile *profile);
+ gboolean                  terminal_profile_get_alternate_screen_scroll (TerminalProfile *profile);
  
  TerminalExitAction        terminal_profile_get_exit_action          (TerminalProfile *profile);
  gboolean                  terminal_profile_get_login_shell          (TerminalProfile *profile);
  gboolean                  terminal_profile_get_update_records       (TerminalProfile *profile);
  gboolean                  terminal_profile_get_use_custom_command   (TerminalProfile *profile);
***************
*** 208,217 ****
--- 210,221 ----
                                                  gboolean                   setting);
  void terminal_profile_set_scroll_on_keystroke  (TerminalProfile           *profile,
                                                  gboolean                   setting);
  void terminal_profile_set_scroll_on_output     (TerminalProfile           *profile,
                                                  gboolean                   setting);
+ void terminal_profile_set_alternate_screen_scroll (TerminalProfile           *profile,
+                                                    gboolean                   setting);
  
  void terminal_profile_set_exit_action          (TerminalProfile           *profile,
                                                  TerminalExitAction         action);
  void terminal_profile_set_login_shell          (TerminalProfile           *profile,
                                                  gboolean                   setting);
diff -r -C5 gnome-terminal-2.22.2/src/terminal-screen.c gnome-terminal-2.22.2-r1/src/terminal-screen.c
*** gnome-terminal-2.22.2/src/terminal-screen.c	2008-06-13 10:48:36.000000000 -0700
--- gnome-terminal-2.22.2-r1/src/terminal-screen.c	2008-06-13 11:05:53.000000000 -0700
***************
*** 640,649 ****
--- 640,652 ----
                                             terminal_profile_get_scroll_on_keystroke (profile));
    
    terminal_widget_set_scroll_on_output (term,
                                          terminal_profile_get_scroll_on_output (profile));
  
+   terminal_widget_set_alternate_screen_scroll (term,
+                                                terminal_profile_get_alternate_screen_scroll (profile));
+ 
    terminal_widget_set_scrollback_lines (term,
                                          terminal_profile_get_scrollback_lines (profile));
  
    if (terminal_profile_get_use_skey (screen->priv->profile))
      {
diff -r -C5 gnome-terminal-2.22.2/src/terminal-widget.h gnome-terminal-2.22.2-r1/src/terminal-widget.h
*** gnome-terminal-2.22.2/src/terminal-widget.h	2008-06-13 10:48:36.000000000 -0700
--- gnome-terminal-2.22.2-r1/src/terminal-widget.h	2008-06-13 11:17:22.000000000 -0700
***************
*** 77,86 ****
--- 77,88 ----
                                                         gboolean              setting);
  void       terminal_widget_set_scroll_on_keystroke    (GtkWidget            *widget,
                                                         gboolean              setting);
  void       terminal_widget_set_scroll_on_output       (GtkWidget            *widget,
                                                         gboolean              setting);
+ void       terminal_widget_set_alternate_screen_scroll (GtkWidget            *widget,
+                                                         gboolean              setting);
  void       terminal_widget_set_scrollback_lines       (GtkWidget            *widget,
                                                         int                   lines);
  void       terminal_widget_set_background_image       (GtkWidget            *widget,
                                                         GdkPixbuf            *pixbuf);
  void       terminal_widget_set_background_image_file  (GtkWidget            *widget,
diff -r -C5 gnome-terminal-2.22.2/src/terminal-widget-vte.c gnome-terminal-2.22.2-r1/src/terminal-widget-vte.c
*** gnome-terminal-2.22.2/src/terminal-widget-vte.c	2008-06-13 10:48:36.000000000 -0700
--- gnome-terminal-2.22.2-r1/src/terminal-widget-vte.c	2008-06-13 11:18:03.000000000 -0700
***************
*** 326,335 ****
--- 326,343 ----
    g_return_if_fail(VTE_IS_TERMINAL(widget));
    vte_terminal_set_scroll_on_output(VTE_TERMINAL(widget), setting);
  }
  
  void
+ terminal_widget_set_alternate_screen_scroll (GtkWidget *widget,
+                                              gboolean   setting)
+ {
+   g_return_if_fail(VTE_IS_TERMINAL(widget));
+   vte_terminal_set_alternate_screen_scroll(VTE_TERMINAL(widget), setting);
+ }
+ 
+ void
  terminal_widget_set_scrollback_lines (GtkWidget *widget,
  				      int        lines)
  {
    g_return_if_fail(VTE_IS_TERMINAL(widget));
    vte_terminal_set_scrollback_lines(VTE_TERMINAL(widget), lines);
