diff options
author | Kristian Rietveld <kris@gtk.org> | 2003-12-19 20:56:19 +0000 |
---|---|---|
committer | Kristian Rietveld <kristian@src.gnome.org> | 2003-12-19 20:56:19 +0000 |
commit | 8a834dce942ee9714475da73467d6220412ece94 (patch) | |
tree | ee1e1c2d125bedc1551c65141d1bf71c6634221b /gtk/gtkmenu.c | |
parent | f615072cde2a404d47f67e58f4a02741fcc4c91c (diff) | |
download | gtk+-8a834dce942ee9714475da73467d6220412ece94.tar.gz |
move item insertion logic here from gtk_menu_real_insert(),
Fri Dec 19 21:52:46 2003 Kristian Rietveld <kris@gtk.org>
* gtk/gtkmenu.c (gtk_menu_do_insert): move item insertion logic
here from gtk_menu_real_insert(),
(gtk_menu_real_insert): just call gtk_menu_do_insert(),
(gtk_menu_reorder_child): run _do_insert after inserting the child
(unbreaks _reorder_child, reported by Tim Janik).
Diffstat (limited to 'gtk/gtkmenu.c')
-rw-r--r-- | gtk/gtkmenu.c | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c index 25bf3e6500..34bc4b20e5 100644 --- a/gtk/gtkmenu.c +++ b/gtk/gtkmenu.c @@ -172,6 +172,9 @@ static void gtk_menu_scroll_item_visible (GtkMenuShell *menu_shell, GtkWidget *menu_item); static void gtk_menu_select_item (GtkMenuShell *menu_shell, GtkWidget *menu_item); +static void gtk_menu_do_insert (GtkMenuShell *menu_shell, + GtkWidget *child, + gint position); static void gtk_menu_real_insert (GtkMenuShell *menu_shell, GtkWidget *child, gint position); @@ -964,19 +967,14 @@ gtk_menu_new (void) } static void -gtk_menu_real_insert (GtkMenuShell *menu_shell, - GtkWidget *child, - gint position) +gtk_menu_do_insert (GtkMenuShell *menu_shell, + GtkWidget *child, + gint position) { gint i; GList *children; GtkMenuPrivate *priv; - if (GTK_WIDGET_REALIZED (menu_shell)) - gtk_widget_set_parent_window (child, GTK_MENU (menu_shell)->bin_window); - - GTK_MENU_SHELL_CLASS (parent_class)->insert (menu_shell, child, position); - priv = gtk_menu_get_private (GTK_MENU (menu_shell)); if (position < 0) @@ -1016,6 +1014,19 @@ gtk_menu_real_insert (GtkMenuShell *menu_shell, } static void +gtk_menu_real_insert (GtkMenuShell *menu_shell, + GtkWidget *child, + gint position) +{ + if (GTK_WIDGET_REALIZED (menu_shell)) + gtk_widget_set_parent_window (child, GTK_MENU (menu_shell)->bin_window); + + GTK_MENU_SHELL_CLASS (parent_class)->insert (menu_shell, child, position); + + gtk_menu_do_insert (menu_shell, child, position); +} + +static void gtk_menu_tearoff_bg_copy (GtkMenu *menu) { GtkWidget *widget; @@ -1772,13 +1783,18 @@ gtk_menu_reorder_child (GtkMenu *menu, gint position) { GtkMenuShell *menu_shell; + g_return_if_fail (GTK_IS_MENU (menu)); g_return_if_fail (GTK_IS_MENU_ITEM (child)); + menu_shell = GTK_MENU_SHELL (menu); + if (g_list_find (menu_shell->children, child)) { menu_shell->children = g_list_remove (menu_shell->children, child); - menu_shell->children = g_list_insert (menu_shell->children, child, position); + menu_shell->children = g_list_insert (menu_shell->children, child, position); + gtk_menu_do_insert (menu_shell, child, position); + if (GTK_WIDGET_VISIBLE (menu_shell)) gtk_widget_queue_resize (GTK_WIDGET (menu_shell)); } |