diff --git a/ChangeLog b/ChangeLog index 03891da27f..3677fd9f93 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,13 @@ +Wed Jan 31 17:16:13 2001 Owen Taylor + + * gtk/gtkcombo.c (gtk_combo_window_key_press): Make Return + key pop down window. (#12074, Jon K Hellan) + Wed Jan 31 16:21:42 2001 Owen Taylor * gtk/gtklist.c (gtk_list_signal_item_toggle): Don't allow - toggling of rows off in BROWSE or EXTENDED mode. (#12072, Greg - Hudson.) The solution here isn't perfect - you get an extraneous + toggling of rows off in BROWSE or EXTENDED mode. (#12072, Jon K Hellan) + The solution here isn't perfect - you get an extraneous emission of "toggle", which could conceivably confuse an app, but better than the current situation. LXR search seems to indicate that no apps in GNOME CVS connect to "toggle". diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 03891da27f..3677fd9f93 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,8 +1,13 @@ +Wed Jan 31 17:16:13 2001 Owen Taylor + + * gtk/gtkcombo.c (gtk_combo_window_key_press): Make Return + key pop down window. (#12074, Jon K Hellan) + Wed Jan 31 16:21:42 2001 Owen Taylor * gtk/gtklist.c (gtk_list_signal_item_toggle): Don't allow - toggling of rows off in BROWSE or EXTENDED mode. (#12072, Greg - Hudson.) The solution here isn't perfect - you get an extraneous + toggling of rows off in BROWSE or EXTENDED mode. (#12072, Jon K Hellan) + The solution here isn't perfect - you get an extraneous emission of "toggle", which could conceivably confuse an app, but better than the current situation. LXR search seems to indicate that no apps in GNOME CVS connect to "toggle". diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 03891da27f..3677fd9f93 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,8 +1,13 @@ +Wed Jan 31 17:16:13 2001 Owen Taylor + + * gtk/gtkcombo.c (gtk_combo_window_key_press): Make Return + key pop down window. (#12074, Jon K Hellan) + Wed Jan 31 16:21:42 2001 Owen Taylor * gtk/gtklist.c (gtk_list_signal_item_toggle): Don't allow - toggling of rows off in BROWSE or EXTENDED mode. (#12072, Greg - Hudson.) The solution here isn't perfect - you get an extraneous + toggling of rows off in BROWSE or EXTENDED mode. (#12072, Jon K Hellan) + The solution here isn't perfect - you get an extraneous emission of "toggle", which could conceivably confuse an app, but better than the current situation. LXR search seems to indicate that no apps in GNOME CVS connect to "toggle". diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 03891da27f..3677fd9f93 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,8 +1,13 @@ +Wed Jan 31 17:16:13 2001 Owen Taylor + + * gtk/gtkcombo.c (gtk_combo_window_key_press): Make Return + key pop down window. (#12074, Jon K Hellan) + Wed Jan 31 16:21:42 2001 Owen Taylor * gtk/gtklist.c (gtk_list_signal_item_toggle): Don't allow - toggling of rows off in BROWSE or EXTENDED mode. (#12072, Greg - Hudson.) The solution here isn't perfect - you get an extraneous + toggling of rows off in BROWSE or EXTENDED mode. (#12072, Jon K Hellan) + The solution here isn't perfect - you get an extraneous emission of "toggle", which could conceivably confuse an app, but better than the current situation. LXR search seems to indicate that no apps in GNOME CVS connect to "toggle". diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 03891da27f..3677fd9f93 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,8 +1,13 @@ +Wed Jan 31 17:16:13 2001 Owen Taylor + + * gtk/gtkcombo.c (gtk_combo_window_key_press): Make Return + key pop down window. (#12074, Jon K Hellan) + Wed Jan 31 16:21:42 2001 Owen Taylor * gtk/gtklist.c (gtk_list_signal_item_toggle): Don't allow - toggling of rows off in BROWSE or EXTENDED mode. (#12072, Greg - Hudson.) The solution here isn't perfect - you get an extraneous + toggling of rows off in BROWSE or EXTENDED mode. (#12072, Jon K Hellan) + The solution here isn't perfect - you get an extraneous emission of "toggle", which could conceivably confuse an app, but better than the current situation. LXR search seems to indicate that no apps in GNOME CVS connect to "toggle". diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 03891da27f..3677fd9f93 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,8 +1,13 @@ +Wed Jan 31 17:16:13 2001 Owen Taylor + + * gtk/gtkcombo.c (gtk_combo_window_key_press): Make Return + key pop down window. (#12074, Jon K Hellan) + Wed Jan 31 16:21:42 2001 Owen Taylor * gtk/gtklist.c (gtk_list_signal_item_toggle): Don't allow - toggling of rows off in BROWSE or EXTENDED mode. (#12072, Greg - Hudson.) The solution here isn't perfect - you get an extraneous + toggling of rows off in BROWSE or EXTENDED mode. (#12072, Jon K Hellan) + The solution here isn't perfect - you get an extraneous emission of "toggle", which could conceivably confuse an app, but better than the current situation. LXR search seems to indicate that no apps in GNOME CVS connect to "toggle". diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 03891da27f..3677fd9f93 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,8 +1,13 @@ +Wed Jan 31 17:16:13 2001 Owen Taylor + + * gtk/gtkcombo.c (gtk_combo_window_key_press): Make Return + key pop down window. (#12074, Jon K Hellan) + Wed Jan 31 16:21:42 2001 Owen Taylor * gtk/gtklist.c (gtk_list_signal_item_toggle): Don't allow - toggling of rows off in BROWSE or EXTENDED mode. (#12072, Greg - Hudson.) The solution here isn't perfect - you get an extraneous + toggling of rows off in BROWSE or EXTENDED mode. (#12072, Jon K Hellan) + The solution here isn't perfect - you get an extraneous emission of "toggle", which could conceivably confuse an app, but better than the current situation. LXR search seems to indicate that no apps in GNOME CVS connect to "toggle". diff --git a/gtk/gtkcombo.c b/gtk/gtkcombo.c index f1b49e4d00..af399a60c3 100644 --- a/gtk/gtkcombo.c +++ b/gtk/gtkcombo.c @@ -46,51 +46,54 @@ const gchar *gtk_combo_string_key = "gtk-combo-string-value"; #define COMBO_LIST_MAX_HEIGHT (400) #define EMPTY_LIST_HEIGHT (15) -static void gtk_combo_class_init (GtkComboClass *klass); -static void gtk_combo_init (GtkCombo *combo); -static void gtk_combo_destroy (GtkObject *combo); -static GtkListItem *gtk_combo_find (GtkCombo *combo); -static gchar * gtk_combo_func (GtkListItem *li); -static gint gtk_combo_focus_idle (GtkCombo *combo); -static gint gtk_combo_entry_focus_out (GtkEntry *entry, - GdkEventFocus *event, - GtkCombo *combo); -static void gtk_combo_get_pos (GtkCombo *combo, - gint *x, - gint *y, - gint *height, - gint *width); -static void gtk_combo_popup_list (GtkCombo *combo); -static void gtk_combo_activate (GtkWidget *widget, - GtkCombo *combo); +static void gtk_combo_class_init (GtkComboClass *klass); +static void gtk_combo_init (GtkCombo *combo); +static void gtk_combo_destroy (GtkObject *combo); +static GtkListItem *gtk_combo_find (GtkCombo *combo); +static gchar * gtk_combo_func (GtkListItem *li); +static gint gtk_combo_focus_idle (GtkCombo *combo); +static gint gtk_combo_entry_focus_out (GtkEntry *entry, + GdkEventFocus *event, + GtkCombo *combo); +static void gtk_combo_get_pos (GtkCombo *combo, + gint *x, + gint *y, + gint *height, + gint *width); +static void gtk_combo_popup_list (GtkCombo *combo); +static void gtk_combo_activate (GtkWidget *widget, + GtkCombo *combo); static void gtk_combo_popup_button_press (GtkWidget *button, GdkEventButton *event, GtkCombo *combo); static void gtk_combo_popup_button_leave (GtkWidget *button, GdkEventCrossing *event, GtkCombo *combo); -static void gtk_combo_update_entry (GtkList *list, - GtkCombo *combo); -static void gtk_combo_update_list (GtkEntry *entry, - GtkCombo *combo); -static gint gtk_combo_button_press (GtkWidget *widget, - GdkEvent *event, - GtkCombo *combo); -static gint gtk_combo_button_release (GtkWidget *widget, - GdkEvent *event, - GtkCombo *combo); -static gint gtk_combo_list_enter (GtkWidget *widget, - GdkEventCrossing *event, - GtkCombo *combo); -static gint gtk_combo_list_key_press (GtkWidget *widget, - GdkEventKey *event, - GtkCombo *combo); -static gint gtk_combo_entry_key_press (GtkEntry *widget, - GdkEventKey *event, - GtkCombo *combo); -static void gtk_combo_item_destroy (GtkObject *object); -static void gtk_combo_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); +static void gtk_combo_update_entry (GtkList *list, + GtkCombo *combo); +static void gtk_combo_update_list (GtkEntry *entry, + GtkCombo *combo); +static gint gtk_combo_button_press (GtkWidget *widget, + GdkEvent *event, + GtkCombo *combo); +static gint gtk_combo_button_release (GtkWidget *widget, + GdkEvent *event, + GtkCombo *combo); +static gint gtk_combo_list_enter (GtkWidget *widget, + GdkEventCrossing *event, + GtkCombo *combo); +static gint gtk_combo_list_key_press (GtkWidget *widget, + GdkEventKey *event, + GtkCombo *combo); +static gint gtk_combo_entry_key_press (GtkEntry *widget, + GdkEventKey *event, + GtkCombo *combo); +static gint gtk_combo_window_key_press (GtkWidget *window, + GdkEventKey *event, + GtkCombo *combo); +static void gtk_combo_item_destroy (GtkObject *object); +static void gtk_combo_size_allocate (GtkWidget *widget, + GtkAllocation *allocation); static GtkHBoxClass *parent_class = NULL; @@ -202,6 +205,34 @@ gtk_combo_entry_key_press (GtkEntry * entry, GdkEventKey * event, GtkCombo * com return FALSE; } +static int +gtk_combo_window_key_press (GtkWidget *window, + GdkEventKey *event, + GtkCombo *combo) +{ + GList *li; + + if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter) + { + if (GTK_WIDGET_VISIBLE (combo->popwin)) + { + gtk_widget_hide (combo->popwin); + + if (GTK_WIDGET_HAS_GRAB (combo->popwin)) + { + gtk_grab_remove (combo->popwin); + gdk_pointer_ungrab (event->time); + } + } + + gtk_signal_emit_stop_by_name (GTK_OBJECT (window), "key_press_event"); + + return TRUE; + } + + return FALSE; +} + static GtkListItem * gtk_combo_find (GtkCombo * combo) { @@ -683,6 +714,9 @@ gtk_combo_init (GtkCombo * combo) combo->popwin = gtk_window_new (GTK_WINDOW_POPUP); gtk_widget_ref (combo->popwin); gtk_window_set_policy (GTK_WINDOW (combo->popwin), 1, 1, 0); + + gtk_signal_connect (GTK_OBJECT (combo->popwin), "key_press_event", + GTK_SIGNAL_FUNC (gtk_combo_window_key_press), combo); gtk_widget_set_events (combo->popwin, GDK_KEY_PRESS_MASK);