Index: gpm.test/src/gpm-prefs-core.c
===================================================================
--- gpm.test.orig/src/gpm-prefs-core.c	2010-07-09 10:44:43.000000000 -0400
+++ gpm.test/src/gpm-prefs-core.c	2010-07-09 10:56:31.000000000 -0400
@@ -409,6 +409,12 @@
 	g_free (value_txt);
 }
 
+static void
+gpm_prefs_delete_array (GArray *array)
+{
+	g_array_free (array, TRUE);
+}
+
 /**
  * gpm_prefs_setup_time_combo:
  * @prefs: This prefs class instance
@@ -418,13 +424,18 @@
  **/
 static void
 gpm_prefs_setup_time_combo (GpmPrefs *prefs, const gchar *widget_name,
-			    const gchar *gpm_pref_key, const gint *values)
+			    const gchar *gpm_pref_key, const gint *values_in)
 {
 	guint value;
 	gchar *text;
 	guint i;
+	gint values_in_len;
+	gint loop_value;
 	gboolean is_writable;
+	gboolean found_value = NULL;
+	gint found_index = -1;
 	GtkWidget *widget;
+	GArray *values;
 
 	widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, widget_name));
 	gpm_prefs_set_combo_simple_text (widget);
@@ -433,15 +444,37 @@
 	is_writable = gconf_client_key_is_writable (prefs->priv->conf, gpm_pref_key, NULL);
 	gtk_widget_set_sensitive (widget, is_writable);
 
+	/* Search values to see if current value is already listed.  If not,
+	   we will add it ourselves. */
+	for (i=0; values_in[i] != -1; i++) {
+		if (value == values_in[i])
+			found_value = TRUE;
+		if (found_index == -1 && (values_in[i] == 0 || value < values_in[i]))
+			found_index = i;
+	}
+	values_in_len = i + 1;
+	if (value == 0) /* 'Never' should always be last */
+		found_index = values_in_len - 1;
+
+	/* Build array of values */
+	values = g_array_sized_new (FALSE, FALSE, sizeof (gint),
+	                            values_in_len + (found_value ? 0 : 1));
+	g_array_append_vals (values, values_in, values_in_len);
+	if (!found_value)
+		g_array_insert_val (values, found_index, value);
+
 	g_object_set_data (G_OBJECT (widget), "conf_key", (gpointer) gpm_pref_key);
-	g_object_set_data (G_OBJECT (widget), "values", (gpointer) values);
+	g_object_set_data_full (G_OBJECT (widget), "values", (gpointer) values,
+	                        (GDestroyNotify) gpm_prefs_delete_array);
 
 	/* add each time */
-	for (i=0; values[i] != -1; i++) {
+	for (i=0; g_array_index (values, gint, i) != -1; i++) {
+
+		loop_value = g_array_index (values, gint, i);
 
 		/* get translation for number of seconds */
-		if (values[i] != 0) {
-			text = gpm_get_timestring (values[i]);
+		if (loop_value != 0) {
+			text = gpm_get_timestring (loop_value);
 			gtk_combo_box_append_text (GTK_COMBO_BOX (widget), text);
 			g_free (text);
 		} else {
@@ -449,7 +482,7 @@
 		}
 
 		/* matches, so set default */
-		if (value == values[i])
+		if (value == loop_value)
 			 gtk_combo_box_set_active (GTK_COMBO_BOX (widget), i);
 	}
 
