From: Bram Moolenaar Date: Wed, 3 Jul 2013 11:04:27 +0000 (+0200) Subject: updated for version 7.3.1289 X-Git-Tag: v7.3.1289 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f9da680a0b131c3895eb61f87abf4dc9c8f6a3a1;p=vim updated for version 7.3.1289 Problem: Get GLIB warning when removing a menu item. Solution: Reference menu-id and also call gtk_container_remove(). (Ivan Krasilnikov) --- diff --git a/src/gui_gtk.c b/src/gui_gtk.c index ba2d23d1e..48537f449 100644 --- a/src/gui_gtk.c +++ b/src/gui_gtk.c @@ -613,6 +613,17 @@ gui_mch_menu_set_tip(vimmenu_T *menu) void gui_mch_destroy_menu(vimmenu_T *menu) { + /* Don't let gtk_container_remove automatically destroy menu->id. */ + if (menu->id != NULL) + g_object_ref(menu->id); + + /* Workaround for a spurious gtk warning in Ubuntu: "Trying to remove + * a child that doesn't believe we're it's parent." + * Remove widget from gui.menubar before destroying it. */ + if (menu->id != NULL && gui.menubar != NULL + && gtk_widget_get_parent(menu->id) == gui.menubar) + gtk_container_remove(GTK_CONTAINER(gui.menubar), menu->id); + # ifdef FEAT_TOOLBAR if (menu->parent != NULL && menu_is_toolbar(menu->parent->name)) { @@ -632,6 +643,8 @@ gui_mch_destroy_menu(vimmenu_T *menu) gtk_widget_destroy(menu->id); } + if (menu->id != NULL) + g_object_unref(menu->id); menu->submenu_id = NULL; menu->id = NULL; } diff --git a/src/version.c b/src/version.c index 4d14c4f73..33762fcb2 100644 --- a/src/version.c +++ b/src/version.c @@ -728,6 +728,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1289, /**/ 1288, /**/