X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkmenushell.c;h=34b47ca7e5074396ebaf02cd8b55b8e5e0aef156;hb=38a9b28a0edfdf8fd6749815bfc3c8edf457e3ec;hp=9d87b818a6a54ce8df297551f96adf6b5b91c056;hpb=c0df6f9622078c5a8007fac2c67d689074978ee1;p=~andy%2Fgtk diff --git a/gtk/gtkmenushell.c b/gtk/gtkmenushell.c index 9d87b818a..34b47ca7e 100644 --- a/gtk/gtkmenushell.c +++ b/gtk/gtkmenushell.c @@ -42,20 +42,24 @@ #include "gtkbindings.h" #include "gtkkeyhash.h" #include "gtklabel.h" -#include "gtkmainprivate.h" +#include "gtkmain.h" #include "gtkmarshalers.h" #include "gtkmenubar.h" #include "gtkmenuitemprivate.h" #include "gtkmenushellprivate.h" #include "gtkmenuprivate.h" #include "gtkmnemonichash.h" -#include "gtktearoffmenuitem.h" #include "gtkwindow.h" #include "gtkprivate.h" +#include "gtkmain.h" #include "gtkintl.h" #include "gtktypebuiltins.h" + +#include "deprecated/gtktearoffmenuitem.h" + #include "a11y/gtkmenushellaccessible.h" + #define MENU_SHELL_TIMEOUT 500 #define PACK_DIRECTION(m) \ @@ -71,6 +75,7 @@ enum { CANCEL, CYCLE_FOCUS, MOVE_SELECTED, + INSERT, LAST_SIGNAL }; @@ -368,6 +373,31 @@ gtk_menu_shell_class_init (GtkMenuShellClass *klass) G_TYPE_BOOLEAN, 1, G_TYPE_INT); + /** + * GtkMenuShell::insert: + * @menu_shell: the object on which the signal is emitted + * @child: the #GtkMenuItem that is being inserted + * @position: the position at which the insert occurs + * + * The ::insert signal is emitted when a new #GtkMenuItem is added to + * a #GtkMenuShell. A separate signal is used instead of + * GtkContainer::add because of the need for an additional position + * parameter. + * + * The inverse of this signal is the GtkContainer::removed signal. + * + * Since: 3.2 + **/ + menu_shell_signals[INSERT] = + g_signal_new (I_("insert"), + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GtkMenuShellClass, insert), + NULL, NULL, + _gtk_marshal_VOID__OBJECT_INT, + G_TYPE_NONE, 2, GTK_TYPE_WIDGET, G_TYPE_INT); + + binding_set = gtk_binding_set_by_class (klass); gtk_binding_entry_add_signal (binding_set, GDK_KEY_Escape, 0, @@ -552,15 +582,10 @@ gtk_menu_shell_insert (GtkMenuShell *menu_shell, GtkWidget *child, gint position) { - GtkMenuShellClass *class; - g_return_if_fail (GTK_IS_MENU_SHELL (menu_shell)); g_return_if_fail (GTK_IS_MENU_ITEM (child)); - class = GTK_MENU_SHELL_GET_CLASS (menu_shell); - - if (class->insert) - class->insert (menu_shell, child, position); + g_signal_emit (menu_shell, menu_shell_signals[INSERT], 0, child, position); } static void