diff options
author | Owen Taylor <otaylor@redhat.com> | 2002-12-14 22:43:52 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2002-12-14 22:43:52 +0000 |
commit | 08a08cf1b5b6040da3f9a93847250e2bab6bdc2e (patch) | |
tree | 1cbfb639181dda19ec1aaea3cc2a9ddeb4cfbaf7 /gtk/gtkmenushell.c | |
parent | c7c9ec32d58ea511af31046b301e9a536c168069 (diff) | |
download | gtk+-08a08cf1b5b6040da3f9a93847250e2bab6bdc2e.tar.gz |
Add a new binding signal, "move_scroll", and use it to hook up
Sat Dec 14 14:19:16 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkmenu.c: Add a new binding signal, "move_scroll",
and use it to hook up Home/End/Page_Up/Page_Down keybindings.
(#80484, Narayana Pattipati, Marius Andreiana)
* gtk/gtkmenu.c (gtk_menu_scroll_item_visible): Fix some
bugs in the computation of when an item is visible. (#99545)
* gtk/gtkbindings.[ch] (_gtk_binding_signal_new) gtk/gtkmenushell.c:
Move here, export privately.
* gtk/gtkmenushell.c (_gtk_menu_shell_select_last): Export
privately.
* gtk/gtkmenushell.c (gtk_menu_shell_select_item): Don't
select the item if it is already selected.
Diffstat (limited to 'gtk/gtkmenushell.c')
-rw-r--r-- | gtk/gtkmenushell.c | 57 |
1 files changed, 15 insertions, 42 deletions
diff --git a/gtk/gtkmenushell.c b/gtk/gtkmenushell.c index 2cded4b87a..b72c04d217 100644 --- a/gtk/gtkmenushell.c +++ b/gtk/gtkmenushell.c @@ -185,35 +185,6 @@ gtk_menu_shell_get_type (void) return menu_shell_type; } -static guint -binding_signal_new (const gchar *signal_name, - GType itype, - GSignalFlags signal_flags, - GCallback handler, - GSignalAccumulator accumulator, - gpointer accu_data, - GSignalCMarshaller c_marshaller, - GType return_type, - guint n_params, - ...) -{ - va_list args; - guint signal_id; - - g_return_val_if_fail (signal_name != NULL, 0); - - va_start (args, n_params); - - signal_id = g_signal_new_valist (signal_name, itype, signal_flags, - g_cclosure_new (handler, NULL, NULL), - accumulator, accu_data, c_marshaller, - return_type, n_params, args); - - va_end (args); - - return signal_id; -} - static void gtk_menu_shell_class_init (GtkMenuShellClass *klass) { @@ -293,14 +264,14 @@ gtk_menu_shell_class_init (GtkMenuShellClass *klass) _gtk_marshal_VOID__VOID, G_TYPE_NONE, 0); menu_shell_signals[CYCLE_FOCUS] = - binding_signal_new ("cycle_focus", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_CALLBACK (gtk_real_menu_shell_cycle_focus), - NULL, NULL, - _gtk_marshal_VOID__ENUM, - G_TYPE_NONE, 1, - GTK_TYPE_DIRECTION_TYPE); + _gtk_binding_signal_new ("cycle_focus", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + G_CALLBACK (gtk_real_menu_shell_cycle_focus), + NULL, NULL, + _gtk_marshal_VOID__ENUM, + G_TYPE_NONE, 1, + GTK_TYPE_DIRECTION_TYPE); binding_set = gtk_binding_set_by_class (klass); @@ -861,7 +832,9 @@ gtk_menu_shell_select_item (GtkMenuShell *menu_shell, class = GTK_MENU_SHELL_GET_CLASS (menu_shell); - if (class->select_item) + if (class->select_item && + !(menu_shell->active && + menu_shell->active_menu_item == menu_item)) class->select_item (menu_shell, menu_item); } @@ -1033,9 +1006,9 @@ gtk_menu_shell_select_first (GtkMenuShell *menu_shell, gtk_menu_shell_select_item (menu_shell, to_select); } -static void -gtk_menu_shell_select_last (GtkMenuShell *menu_shell, - gboolean search_sensitive) +void +_gtk_menu_shell_select_last (GtkMenuShell *menu_shell, + gboolean search_sensitive) { GtkWidget *to_select = NULL; GList *tmp_list; @@ -1134,7 +1107,7 @@ gtk_real_menu_shell_move_current (GtkMenuShell *menu_shell, if (!had_selection && !menu_shell->active_menu_item && menu_shell->children) - gtk_menu_shell_select_last (menu_shell, TRUE); + _gtk_menu_shell_select_last (menu_shell, TRUE); break; case GTK_MENU_DIR_NEXT: gtk_menu_shell_move_selected (menu_shell, 1); |