From c652859042c1ae55469eb69fb22b4647147cd30f Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Fri, 12 Apr 2002 21:52:16 +0000 Subject: [PATCH] relocate the remove_weak_pointer to just before we free the page, to be 2002-04-12 Havoc Pennington * gtk/gtknotebook.c (gtk_notebook_real_remove): relocate the remove_weak_pointer to just before we free the page, to be sure it doesn't get re-added. #75282 --- ChangeLog | 6 ++++++ ChangeLog.pre-2-10 | 6 ++++++ ChangeLog.pre-2-2 | 6 ++++++ ChangeLog.pre-2-4 | 6 ++++++ ChangeLog.pre-2-6 | 6 ++++++ ChangeLog.pre-2-8 | 6 ++++++ gtk/gtknotebook.c | 13 +++++++------ 7 files changed, 43 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 75dc0ddf8..407d57ea0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2002-04-12 Havoc Pennington + + * gtk/gtknotebook.c (gtk_notebook_real_remove): relocate the + remove_weak_pointer to just before we free the page, to be sure + it doesn't get re-added. #75282 + Fri Apr 12 18:32:46 2002 Kristian Rietveld * gtk/gtktreeview.c (gtk_tree_view_real_set_cursor): add diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 75dc0ddf8..407d57ea0 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +2002-04-12 Havoc Pennington + + * gtk/gtknotebook.c (gtk_notebook_real_remove): relocate the + remove_weak_pointer to just before we free the page, to be sure + it doesn't get re-added. #75282 + Fri Apr 12 18:32:46 2002 Kristian Rietveld * gtk/gtktreeview.c (gtk_tree_view_real_set_cursor): add diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 75dc0ddf8..407d57ea0 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,9 @@ +2002-04-12 Havoc Pennington + + * gtk/gtknotebook.c (gtk_notebook_real_remove): relocate the + remove_weak_pointer to just before we free the page, to be sure + it doesn't get re-added. #75282 + Fri Apr 12 18:32:46 2002 Kristian Rietveld * gtk/gtktreeview.c (gtk_tree_view_real_set_cursor): add diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 75dc0ddf8..407d57ea0 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,9 @@ +2002-04-12 Havoc Pennington + + * gtk/gtknotebook.c (gtk_notebook_real_remove): relocate the + remove_weak_pointer to just before we free the page, to be sure + it doesn't get re-added. #75282 + Fri Apr 12 18:32:46 2002 Kristian Rietveld * gtk/gtktreeview.c (gtk_tree_view_real_set_cursor): add diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 75dc0ddf8..407d57ea0 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,9 @@ +2002-04-12 Havoc Pennington + + * gtk/gtknotebook.c (gtk_notebook_real_remove): relocate the + remove_weak_pointer to just before we free the page, to be sure + it doesn't get re-added. #75282 + Fri Apr 12 18:32:46 2002 Kristian Rietveld * gtk/gtktreeview.c (gtk_tree_view_real_set_cursor): add diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 75dc0ddf8..407d57ea0 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +2002-04-12 Havoc Pennington + + * gtk/gtknotebook.c (gtk_notebook_real_remove): relocate the + remove_weak_pointer to just before we free the page, to be sure + it doesn't get re-added. #75282 + Fri Apr 12 18:32:46 2002 Kristian Rietveld * gtk/gtktreeview.c (gtk_tree_view_real_set_cursor): add diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c index bce6cad25..3f933700f 100644 --- a/gtk/gtknotebook.c +++ b/gtk/gtknotebook.c @@ -2387,12 +2387,6 @@ gtk_notebook_real_remove (GtkNotebook *notebook, gtk_notebook_switch_focus_tab (notebook, next_list); page = list->data; - - if (page->last_focus_child) - { - g_object_remove_weak_pointer (G_OBJECT (page->last_focus_child), (gpointer *)&page->last_focus_child); - page->last_focus_child = NULL; - } if (GTK_WIDGET_VISIBLE (page->child) && GTK_WIDGET_VISIBLE (notebook)) need_resize = TRUE; @@ -2412,6 +2406,13 @@ gtk_notebook_real_remove (GtkNotebook *notebook, notebook->children = g_list_remove_link (notebook->children, list); g_list_free (list); + + if (page->last_focus_child) + { + g_object_remove_weak_pointer (G_OBJECT (page->last_focus_child), (gpointer *)&page->last_focus_child); + page->last_focus_child = NULL; + } + g_free (page); if (!notebook->children && notebook->show_tabs &&