diff --git a/capplets/mouse/gnome-mouse-properties.c b/capplets/mouse/gnome-mouse-properties.c
index 816eab5..b5542b4 100644
--- a/capplets/mouse/gnome-mouse-properties.c
+++ b/capplets/mouse/gnome-mouse-properties.c
@@ -106,6 +106,39 @@ get_default_mouse_info (int *default_numerator, int *default_denominator, int *d
 }
 
 static GConfValue *
+touchpad_delay_from_gconf (GConfPropertyEditor *peditor,
+				const GConfValue *value)
+{
+	GConfValue *new_value;
+	gfloat touchpad_delay;
+
+	new_value = gconf_value_new (GCONF_VALUE_FLOAT);
+
+	touchpad_delay = CLAMP (gconf_value_get_float (value), 0.0, 4.0);
+	
+	gconf_value_set_float (new_value, touchpad_delay);
+
+	return new_value;
+}
+
+static GConfValue *
+touchpad_delay_to_gconf (GConfPropertyEditor *peditor,
+			      const GConfValue *value)
+{
+	GConfValue *new_value;
+	gfloat touchpad_delay;
+
+	new_value = gconf_value_new (GCONF_VALUE_FLOAT);
+	touchpad_delay = CLAMP (gconf_value_get_float (value), 0.0, 4.0);
+
+	gconf_value_set_float (new_value, touchpad_delay);
+
+	return new_value;
+}
+
+
+
+static GConfValue *
 motion_acceleration_from_gconf (GConfPropertyEditor *peditor,
 				const GConfValue *value)
 {
@@ -384,6 +417,14 @@ find_synaptics (void)
 	return ret;
 }
 
+static void
+touchpad_disable_w_typing_toggled_cb (GtkWidget *checkbox, GtkBuilder *dialog)
+{
+	gtk_widget_set_sensitive ( WID ("touch_delay_scale"),
+			gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbox)));
+}
+			
+
 /* Set up the property editors in the dialog. */
 static void
 setup_dialog (GtkBuilder *dialog, GConfChangeSet *changeset)
@@ -446,6 +487,11 @@ setup_dialog (GtkBuilder *dialog, GConfChangeSet *changeset)
 			(changeset, "/desktop/gnome/peripherals/touchpad/tap_to_click", WID ("tap_to_click_toggle"), NULL);
 		gconf_peditor_new_boolean
 			(changeset, "/desktop/gnome/peripherals/touchpad/horiz_scroll_enabled", WID ("horiz_scroll_toggle"), NULL);
+		gconf_peditor_new_numeric_range
+			(changeset, "/desktop/gnome/peripherals/touchpad/touchpad_delay", WID ("touch_delay_scale"),
+		 "conv-to-widget-cb", touchpad_delay_from_gconf,
+		 "conv-from-widget-cb", touchpad_delay_to_gconf,
+		 NULL);
 		radio = GTK_RADIO_BUTTON (WID ("scroll_disabled_radio"));
 		peditor = gconf_peditor_new_select_radio
 			(changeset, "/desktop/gnome/peripherals/touchpad/scroll_method", gtk_radio_button_get_group (radio),
@@ -454,7 +500,8 @@ setup_dialog (GtkBuilder *dialog, GConfChangeSet *changeset)
 		scrollmethod_changed_event (GCONF_PROPERTY_EDITOR (peditor), NULL, NULL, dialog);
 		g_signal_connect (peditor, "value-changed",
 				  G_CALLBACK (scrollmethod_changed_event), dialog);
-	}
+	g_signal_connect (WID ("disable_w_typing_toggle"), "toggled", G_CALLBACK (touchpad_disable_w_typing_toggled_cb), dialog);
+}
 
 }
 
diff --git a/capplets/mouse/gnome-mouse-properties.ui b/capplets/mouse/gnome-mouse-properties.ui
index dbc0853..5eff77e 100644
--- a/capplets/mouse/gnome-mouse-properties.ui
+++ b/capplets/mouse/gnome-mouse-properties.ui
@@ -1429,6 +1429,68 @@
                       </packing>
                     </child>
                     <child>
+                      <object class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="left_padding">50</property>
+                        <child>
+                          <object class="GtkHBox" id="touch_delay_box">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
+			    <property name="orientation">horizontal</property>
+                            <child>
+                              <object class="GtkLabel" id="touch_delay_label">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Delay:</property>
+                              </object>
+                              <packing>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="touch_delay_short_label">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">short</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHScale" id="touch_delay_scale">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="update_policy">discontinuous</property>
+                                <property name="adjustment">adjustment8</property>
+                                <property name="draw_value">False</property>
+                                <property name="value_pos">right</property>
+                              </object>
+                              <packing>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="touch_delay_long_label">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">long</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="position">3</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
                       <object class="GtkHBox" id="hbox11">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -1465,7 +1527,7 @@
                       <packing>
                         <property name="expand">False</property>
                         <property name="fill">False</property>
-                        <property name="position">2</property>
+                        <property name="position">3</property>
                       </packing>
                     </child>
                   </object>
@@ -1693,4 +1755,10 @@
       <action-widget response="2">closebutton1</action-widget>
     </action-widgets>
   </object>
+  <object class="GtkAdjustment" id="adjustment8">
+    <property name="value">1.2</property>
+    <property name="upper">4</property>
+    <property name="step_increment">0.01</property>
+    <property name="page_increment">0.01</property>
+  </object>
 </interface>
