*** metacity-2.8.8/src/metacity.schemas.in	2004-12-06 10:31:16.000000000 -0800
--- metacity-2.8.8_dpk/src/metacity.schemas.in	2005-11-29 11:14:44.391399712 -0800
***************
*** 62,67 ****
--- 62,112 ----
      </schema>
  
      <schema>
+       <key>/schemas/apps/metacity/general/focus_new_normal_window</key>
+       <applyto>/apps/metacity/general/focus_new_normal_window</applyto>
+       <owner>metacity</owner>
+       <type>string</type>
+       <default>true</default>
+       <locale name="C">
+          <short>Give focus to new windows</short>
+          <long>
+           This option determines if metacity will give automatically give
+           focus to newly created windows that ask for it.
+          </long>
+       </locale>
+     </schema>
+ 
+     <schema>
+       <key>/schemas/apps/metacity/general/focus_new_dialog_window</key>
+       <applyto>/apps/metacity/general/focus_new_dialog_window</applyto>
+       <owner>metacity</owner>
+       <type>string</type>
+       <default>true</default>
+       <locale name="C">
+          <short>Give focus to new dialog boxes</short>
+          <long>
+           This option determines if metacity will give automatically give
+           focus to newly created dialog boxes that ask for it.
+          </long>
+       </locale>
+     </schema>
+ 
+     <schema>
+       <key>/schemas/apps/metacity/general/focus_new_modal_dialog_window</key>
+       <applyto>/apps/metacity/general/focus_new_modal_dialog_window</applyto>
+       <owner>metacity</owner>
+       <type>string</type>
+       <default>true</default>
+       <locale name="C">
+          <short>Give focus to new modal dialog boxes</short>
+          <long>
+           This option determines if metacity will give automatically give
+           focus to newly created modal dialog boxes that ask for it.
+          </long>
+       </locale>
+     </schema>
+ 
+     <schema>
        <key>/schemas/apps/metacity/general/action_double_click_titlebar</key>
        <applyto>/apps/metacity/general/action_double_click_titlebar</applyto>
        <owner>metacity</owner>
*** metacity-2.8.8/src/prefs.c	2005-11-29 12:22:36.255382296 -0800
--- metacity-2.8.8_dpk/src/prefs.c	2005-11-29 12:20:32.396211752 -0800
***************
*** 64,69 ****
--- 64,73 ----
  #define KEY_AUDIBLE_BELL "/apps/metacity/general/audible_bell"
  #define KEY_VISUAL_BELL_TYPE "/apps/metacity/general/visual_bell_type"
  
+ #define KEY_FOCUS_NEW_NORMAL_WINDOW "/apps/metacity/general/focus_new_normal_window"
+ #define KEY_FOCUS_NEW_DIALOG_WINDOW "/apps/metacity/general/focus_new_dialog_window"
+ #define KEY_FOCUS_NEW_MODAL_DIALOG_WINDOW "/apps/metacity/general/focus_new_modal_dialog_window"
+ 
  #ifdef HAVE_GCONF
  static GConfClient *default_client = NULL;
  static GList *changes = NULL;
***************
*** 87,92 ****
--- 91,99 ----
  static gboolean bell_is_audible = TRUE;
  static gboolean reduced_resources = FALSE;
  static gboolean raise_on_click = FALSE;
+ static gboolean focus_new_normal_window = TRUE;
+ static gboolean focus_new_dialog_window = TRUE;
+ static gboolean focus_new_modal_dialog_window = TRUE;
  
  static MetaVisualBellType visual_bell_type = META_VISUAL_BELL_INVALID;
  static MetaButtonLayout button_layout = {
***************
*** 136,141 ****
--- 143,151 ----
  static gboolean update_workspace_name     (const char  *name,
                                             const char  *value);
  static gboolean update_reduced_resources  (gboolean     value);
+ static gboolean update_focus_new_normal_window  (gboolean     value);
+ static gboolean update_focus_new_dialog_window  (gboolean     value);
+ static gboolean update_focus_new_modal_dialog_window  (gboolean     value);
  
  static void change_notify (GConfClient    *client,
                             guint           cnxn_id,
***************
*** 402,407 ****
--- 412,432 ----
  				    &err);
    cleanup_error (&err);
    update_reduced_resources (bool_val);
+ 
+   bool_val = gconf_client_get_bool (default_client, KEY_FOCUS_NEW_NORMAL_WINDOW,
+                                     &err);
+   cleanup_error (&err);
+   update_focus_new_normal_window (bool_val);
+ 
+   bool_val = gconf_client_get_bool (default_client, KEY_FOCUS_NEW_DIALOG_WINDOW,
+                                     &err);
+   cleanup_error (&err);
+   update_focus_new_dialog_window (bool_val);
+ 
+   bool_val = gconf_client_get_bool (default_client, KEY_FOCUS_NEW_MODAL_DIALOG_WINDOW,
+                                     &err);
+   cleanup_error (&err);
+   update_focus_new_modal_dialog_window (bool_val);
  #endif /* HAVE_GCONF */
    
    /* Load keybindings prefs */
***************
*** 1321,1326 ****
--- 1346,1381 ----
  
    return old != reduced_resources;
  }
+ 
+ static gboolean
+ update_focus_new_normal_window (gboolean value)
+ {
+   gboolean old = focus_new_normal_window;
+ 
+   focus_new_normal_window = value;
+ 
+   return old != focus_new_normal_window;
+ }
+ 
+ static gboolean
+ update_focus_new_dialog_window (gboolean value)
+ {
+   gboolean old = focus_new_dialog_window;
+ 
+   focus_new_dialog_window = value;
+ 
+   return old != focus_new_dialog_window;
+ }
+ 
+ static gboolean
+ update_focus_new_modal_dialog_window (gboolean value)
+ {
+   gboolean old = focus_new_modal_dialog_window;
+ 
+   focus_new_modal_dialog_window = value;
+ 
+   return old != focus_new_modal_dialog_window;
+ }
  #endif /* HAVE_GCONF */
  
  #ifdef WITH_VERBOSE_MODE
***************
*** 2075,2080 ****
--- 2130,2153 ----
    return reduced_resources;
  }
  
+ gboolean
+ meta_prefs_get_focus_new_normal_window (void)
+ {
+   return focus_new_normal_window;
+ }
+ 
+ gboolean
+ meta_prefs_get_focus_new_dialog_window (void)
+ {
+   return focus_new_dialog_window;
+ }
+ 
+ gboolean
+ meta_prefs_get_focus_new_modal_dialog_window (void)
+ {
+   return focus_new_modal_dialog_window;
+ }
+ 
  MetaKeyBindingAction
  meta_prefs_get_keybinding_action (const char *name)
  {
*** metacity-2.8.8/src/prefs.h	2005-11-29 12:22:36.255382296 -0800
--- metacity-2.8.8_dpk/src/prefs.h	2005-11-29 12:22:20.300807760 -0800
***************
*** 73,78 ****
--- 73,81 ----
  int                         meta_prefs_get_auto_raise_delay   (void);
  gboolean                    meta_prefs_get_reduced_resources  (void);
  gboolean					meta_prefs_get_raise_on_click     (void);
+ gboolean		    meta_prefs_get_focus_new_normal_window (void);
+ gboolean		    meta_prefs_get_focus_new_dialog_window (void);
+ gboolean		    meta_prefs_get_focus_new_modal_dialog_window (void);
  
  const char*                 meta_prefs_get_command            (int i);
  
*** metacity-2.8.8/src/window.c	2004-12-06 10:31:16.000000000 -0800
--- metacity-2.8.8_dpk/src/window.c	2005-11-29 11:12:00.546307952 -0800
***************
*** 1580,1587 ****
--- 1580,1590 ----
        /* don't focus these */
        break;
      case META_WINDOW_NORMAL:
+       return meta_prefs_get_focus_new_normal_window ();
      case META_WINDOW_DIALOG:
+       return meta_prefs_get_focus_new_dialog_window ();
      case META_WINDOW_MODAL_DIALOG:
+       return meta_prefs_get_focus_new_modal_dialog_window ();
        /* Disable the focus-stealing-prevention stuff for now; see #149028 */
        return TRUE;
  
