--- gtk.old/ChangeLog	Mon Apr  1 14:32:27 2002
+++ ChangeLog	Mon Apr  1 13:57:26 2002
@@ -1,3 +1,10 @@
+2002-04-01  Narayana Pattipati  <narayana.pattipati@wipro.com>
+
+        * gtk/gtkcombo.c (gtk_combo_entry_key_press):
+        Added code for key navigation with Ctrl+Down, Ctrl+Up,
+        and for sounding system beep when the user cycle through
+        entries in the list with out posting the menu. Bug #53579.
+
 Sun Mar 24 10:32:38 2002  Jonathan Blandford  <jrb@redhat.com>
 
 	* gtk/gtktreemodel.c (gtk_tree_path_copy): Make path arg const, #75653
--- gtk.old/gtkcombo.c	Mon Apr  1 14:35:02 2002
+++ gtk.new/gtkcombo.c	Mon Apr  1 14:30:45 2002
@@ -257,7 +257,27 @@ gtk_combo_entry_key_press (GtkEntry * en
 	  gtk_signal_emit_stop_by_name (GTK_OBJECT (entry), "key_press_event");
 	  return TRUE;
 	}
+      gdk_beep ();
+      return TRUE;
+    }
+
+  else if ((event->state & GDK_CONTROL_MASK) && (event->keyval == GDK_Down || event->keyval == GDK_KP_Down))
+    {
+      gtk_combo_popup_list (combo);
+
+      if (!GTK_WIDGET_HAS_FOCUS (combo->entry))
+          gtk_widget_grab_focus (combo->entry);
+
+      gtk_grab_add (combo->popwin);
+      gdk_pointer_grab (combo->popwin->window, TRUE,
+                    GDK_BUTTON_PRESS_MASK |
+                    GDK_BUTTON_RELEASE_MASK |
+                    GDK_POINTER_MOTION_MASK,
+                    NULL, NULL, GDK_CURRENT_TIME);
+ 
+      return TRUE;
     }
+
   else if ((event->keyval == GDK_Down)
 	   || (event->keyval == GDK_KP_Down)
 	   || ((event->state & GDK_MOD1_MASK) && ((event->keyval == 'n') || (event->keyval == 'N'))))
@@ -274,7 +294,10 @@ gtk_combo_entry_key_press (GtkEntry * en
 	  gtk_signal_emit_stop_by_name (GTK_OBJECT (entry), "key_press_event");
 	  return TRUE;
 	}
+      gdk_beep ();
+      return TRUE;
     }
+
   return FALSE;
 }
 
@@ -729,7 +752,7 @@ gtk_combo_list_enter (GtkWidget        *
 static int
 gtk_combo_list_key_press (GtkWidget * widget, GdkEventKey * event, GtkCombo * combo)
 {
-  if (event->keyval == GDK_Escape)
+  if (event->keyval == GDK_Escape || (event->keyval == GDK_Up && event->state == GDK_CONTROL_MASK))
     {
       if (GTK_WIDGET_HAS_GRAB (combo->list))
 	gtk_list_end_drag_selection (GTK_LIST (combo->list));
