diff -upr gnome-terminal-2.26.0-orig/src/gnome-terminal.schemas.in gnome-terminal-2.26.0/src/gnome-terminal.schemas.in
--- gnome-terminal-2.26.0-orig/src/gnome-terminal.schemas.in	2009-01-12 16:58:42.000000000 -0200
+++ gnome-terminal-2.26.0/src/gnome-terminal.schemas.in	2009-03-21 03:52:03.000000000 -0300
@@ -97,16 +97,15 @@
     </schema>
 
     <schema>
-      <key>/schemas/apps/gnome-terminal/global/confirm_window_close</key>
-      <applyto>/apps/gnome-terminal/global/confirm_window_close</applyto>
+      <key>/schemas/apps/gnome-terminal/global/confirm_terminal_close</key>
+      <applyto>/apps/gnome-terminal/global/confirm_terminal_close</applyto>
       <owner>gnome-terminal</owner>
-      <type>bool</type>
-      <default>true</default>
+      <type>string</type>
+      <default>running_process</default>
       <locale name="C">
-         <short>Whether to ask for confirmation when closing terminal windows</short>
+         <short>Whether to ask for confirmation when closing terminals</short>
          <long>
-	 Whether to ask for confirmation when closing a terminal window which has
-	 more than one open tab.
+	 Whether to ask for confirmation when closing a terminal.
          </long>
       </locale>
     </schema>
diff -upr gnome-terminal-2.26.0-orig/src/terminal-window.c gnome-terminal-2.26.0/src/terminal-window.c
--- gnome-terminal-2.26.0-orig/src/terminal-window.c	2009-02-22 15:42:20.000000000 -0300
+++ gnome-terminal-2.26.0/src/terminal-window.c	2009-03-21 03:53:20.000000000 -0300
@@ -38,6 +38,13 @@
 #include "terminal-util.h"
 #include "terminal-window.h"
 
+typedef enum 
+{
+  TERMINAL_CONFIRM_CLOSE_ALWAYS,
+  TERMINAL_CONFIRM_CLOSE_NEVER,
+  TERMINAL_CONFIRM_CLOSE_RUNNING
+} TerminalConfirmClose;
+
 struct _TerminalWindowPrivate
 {
   GtkActionGroup *action_group;
@@ -67,6 +74,7 @@ struct _TerminalWindowPrivate
   void *old_geometry_widget; /* only used for pointer value as it may be freed */
   char *startup_id;
 
+  TerminalConfirmClose confirm_close;
   GtkWidget *confirm_close_dialog;
 
   guint menubar_visible : 1;
@@ -161,6 +169,9 @@ static void terminal_set_title_callback 
                                                TerminalWindow *window);
 static void terminal_add_encoding_callback    (GtkAction *action,
                                                TerminalWindow *window);
+static void terminal_confirm_close_callback   (GtkAction *action,
+                                               GtkRadioAction *current,
+                                               TerminalWindow *window);
 static void terminal_reset_callback           (GtkAction *action,
                                                TerminalWindow *window);
 static void terminal_reset_clear_callback     (GtkAction *action,
@@ -1552,6 +1563,13 @@ terminal_window_encoding_list_changed_cb
   terminal_window_update_encoding_menu (window);
 }
 
+static GConfEnumStringPair confirm_close_enum_lookup [] = {
+  { TERMINAL_CONFIRM_CLOSE_ALWAYS, "always" },
+  { TERMINAL_CONFIRM_CLOSE_NEVER,  "never"  },
+  { TERMINAL_CONFIRM_CLOSE_RUNNING,  "running_process"  },
+  { 0, NULL }
+};
+
 static void
 terminal_window_init (TerminalWindow *window)
 {
@@ -1622,10 +1640,11 @@ terminal_window_init (TerminalWindow *wi
 
       /* Terminal menu */
       { "TerminalProfiles", NULL, N_("Change _Profile") },
-      { "TerminalSetTitle", NULL, N_("_Set Title…"), NULL,
+      { "TerminalSetTitle", NULL, N_("Set _Title…"), NULL,
         NULL,
         G_CALLBACK (terminal_set_title_callback) },
-      { "TerminalSetEncoding", NULL, N_("Set _Character Encoding") },
+      { "TerminalSetEncoding", NULL, N_("Set Character _Encoding") },
+      { "TerminalConfirmClose", NULL, N_("_Confirm on Close") },
       { "TerminalReset", NULL, N_("_Reset"), NULL,
         NULL,
         G_CALLBACK (terminal_reset_callback) },
@@ -1719,6 +1738,21 @@ terminal_window_init (TerminalWindow *wi
         G_CALLBACK (view_fullscreen_toggled_callback),
         FALSE }
     };
+  
+  const GtkRadioActionEntry radio_menu_entries[] =
+    {
+      /* Confirm on Close Menu */
+      { "ConfirmAlways", NULL, N_("_Always"), NULL,
+        NULL,
+        TERMINAL_CONFIRM_CLOSE_ALWAYS },
+      { "ConfirmNever", NULL, N_("_Never"), NULL,
+        NULL,
+        TERMINAL_CONFIRM_CLOSE_NEVER },
+      { "ConfirmRunningProcess", NULL, N_("When a Process is _Running"), NULL,
+        NULL,
+        TERMINAL_CONFIRM_CLOSE_RUNNING }
+    };
+  
   TerminalWindowPrivate *priv;
   TerminalApp *app;
   GtkActionGroup *action_group;
@@ -1728,6 +1762,8 @@ terminal_window_init (TerminalWindow *wi
   GError *error;
   GtkWindowGroup *window_group;
   GtkAccelGroup *accel_group;
+  GConfClient *client;
+  gchar *confirm_close_str;
 
   priv = window->priv = G_TYPE_INSTANCE_GET_PRIVATE (window, TERMINAL_TYPE_WINDOW, TerminalWindowPrivate);
 
@@ -1782,6 +1818,12 @@ terminal_window_init (TerminalWindow *wi
   gtk_widget_get_clipboard (GTK_WIDGET (window), GDK_SELECTION_CLIPBOARD);
 #endif
 
+  client = gconf_client_get_default ();
+  confirm_close_str = gconf_client_get_string (client, CONF_GLOBAL_PREFIX "/confirm_terminal_close", NULL);
+  g_object_unref (client);
+  if (!gconf_string_to_enum (confirm_close_enum_lookup, confirm_close_str, (gint *) &(priv->confirm_close)))
+    priv->confirm_close = TERMINAL_CONFIRM_CLOSE_RUNNING;
+
   /* Create the UI manager */
   manager = priv->ui_manager = gtk_ui_manager_new ();
 
@@ -1801,6 +1843,12 @@ terminal_window_init (TerminalWindow *wi
                                        toggle_menu_entries,
                                        G_N_ELEMENTS (toggle_menu_entries),
                                        window);
+  gtk_action_group_add_radio_actions (action_group,
+                                      radio_menu_entries,
+                                      G_N_ELEMENTS (radio_menu_entries),
+                                      priv->confirm_close,
+                                      G_CALLBACK (terminal_confirm_close_callback),
+                                      window);
   gtk_ui_manager_insert_action_group (manager, action_group, 0);
   g_object_unref (action_group);
 
@@ -1893,6 +1941,15 @@ terminal_window_dispose (GObject *object
   TerminalWindow *window = TERMINAL_WINDOW (object);
   TerminalWindowPrivate *priv = window->priv;
   GdkScreen *screen;
+  GConfClient *client;
+  const gchar *confirm_close_str;
+  GError *error;
+
+  client = gconf_client_get_default ();
+  confirm_close_str = gconf_enum_to_string (confirm_close_enum_lookup, priv->confirm_close);
+  if (confirm_close_str)
+    gconf_client_set_string (client, CONF_GLOBAL_PREFIX "/confirm_terminal_close", confirm_close_str, &error);
+  g_object_unref (client);
 
   remove_popup_info (window);
 
@@ -2846,9 +2903,8 @@ confirm_close_window_or_tab (TerminalWin
 {
   TerminalWindowPrivate *priv = window->priv;
   GtkWidget *dialog;
-  GConfClient *client;
-  gboolean do_confirm;
-  int n_tabs;
+  gboolean process_running;
+  int n_tabs = 1;
 
   if (priv->confirm_close_dialog)
     {
@@ -2857,42 +2913,39 @@ confirm_close_window_or_tab (TerminalWin
                            GTK_RESPONSE_DELETE_EVENT);
     }
 
-  client = gconf_client_get_default ();
-  do_confirm = gconf_client_get_bool (client, CONF_GLOBAL_PREFIX "/confirm_window_close", NULL);
-  g_object_unref (client);
-  if (!do_confirm)
+  if (priv->confirm_close == TERMINAL_CONFIRM_CLOSE_NEVER)
     return FALSE;
 
-  if (screen)
-    {
-      do_confirm = terminal_screen_has_foreground_process (screen);
-      n_tabs = 1;
-    }
-  else
+  if (priv->confirm_close == TERMINAL_CONFIRM_CLOSE_RUNNING)
     {
-      GList *tabs, *t;
-
-      do_confirm = FALSE;
+      if (screen)
+        process_running = terminal_screen_has_foreground_process (screen);
+      else
+        {
+          GList *tabs, *t;
 
-      tabs = terminal_window_list_screen_containers (window);
-      n_tabs = g_list_length (tabs);
+          process_running = FALSE;
 
-      for (t = tabs; t != NULL; t = t->next)
-        {
-          TerminalScreen *screen;
+          tabs = terminal_window_list_screen_containers (window);
+          n_tabs = g_list_length (tabs);
 
-          screen = terminal_screen_container_get_screen ((GtkWidget *) t->data);
-          if (terminal_screen_has_foreground_process (screen))
+          for (t = tabs; t != NULL; t = t->next)
             {
-              do_confirm = TRUE;
-              break;
+              TerminalScreen *screen;
+
+              screen = terminal_screen_container_get_screen ((GtkWidget *) t->data);
+              if (terminal_screen_has_foreground_process (screen))
+                {
+                  process_running = TRUE;
+                  break;
+                }
             }
+          g_list_free (tabs);
         }
-      g_list_free (tabs);
-    }
 
-  if (!do_confirm)
-    return FALSE;
+      if (!process_running)
+        return FALSE;
+    }
 
   dialog = priv->confirm_close_dialog =
     gtk_message_dialog_new (GTK_WINDOW (window),
@@ -2901,18 +2954,21 @@ confirm_close_window_or_tab (TerminalWin
                             GTK_BUTTONS_CANCEL,
                             "%s", screen ? _("Close this terminal?") : _("Close this window?"));
 
-  if (n_tabs > 1)
-    gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
-                                              "%s", _("There are still processes running in some terminals in this window. "
-                                                      "Closing the window will kill all of them."));
-  else
-    gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
-                                              "%s", _("There is still a process running in this terminal. "
-                                                      "Closing the terminal will kill it."));
+  if (priv->confirm_close == TERMINAL_CONFIRM_CLOSE_RUNNING)
+    {
+      if (n_tabs > 1)
+        gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+                                                  "%s", _("There are still processes running in some terminals in this window. "
+                                                  "Closing the window will kill all of them."));
+      else
+        gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+                                                  "%s", _("There is still a process running in this terminal. "
+                                                  "Closing the terminal will kill it."));
+    }
 
   gtk_window_set_title (GTK_WINDOW (dialog), ""); 
 
-  gtk_dialog_add_button (GTK_DIALOG (dialog), n_tabs > 1 ? _("_Close Window") : _("_Close Terminal"), GTK_RESPONSE_ACCEPT);
+  gtk_dialog_add_button (GTK_DIALOG (dialog), screen ? _("_Close Terminal") : _("_Close Window"), GTK_RESPONSE_ACCEPT);
   gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
 
   g_object_set_data (G_OBJECT (dialog), "close-screen", screen);
@@ -3114,6 +3170,16 @@ view_fullscreen_toggled_callback (GtkTog
     gtk_window_unfullscreen (GTK_WINDOW (window));
 }
 
+static void
+terminal_confirm_close_callback (GtkAction   *action,
+                                 GtkRadioAction *current,
+                                 TerminalWindow *window)
+{
+  TerminalWindowPrivate *priv = window->priv;
+  
+  priv->confirm_close = gtk_radio_action_get_current_value (GTK_RADIO_ACTION (current));
+}
+
 static const double zoom_factors[] = {
   TERMINAL_SCALE_MINIMUM,
   TERMINAL_SCALE_XXXXX_SMALL,
diff -upr gnome-terminal-2.26.0-orig/src/terminal.xml gnome-terminal-2.26.0/src/terminal.xml
--- gnome-terminal-2.26.0-orig/src/terminal.xml	2009-01-12 16:58:42.000000000 -0200
+++ gnome-terminal-2.26.0/src/terminal.xml	2009-03-21 03:52:03.000000000 -0300
@@ -38,6 +38,11 @@
         <separator />
         <menuitem action="TerminalAddEncoding" />
       </menu>
+      <menu action="TerminalConfirmClose" >
+        <menuitem action="ConfirmNever" />
+        <menuitem action="ConfirmAlways" />
+        <menuitem action="ConfirmRunningProcess" />
+      </menu>
       <separator />
       <menuitem action="TerminalReset" />
       <menuitem action="TerminalResetClear" />
