diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nautilus-notebook.c | 18 | ||||
-rw-r--r-- | src/nautilus-notebook.h | 2 | ||||
-rw-r--r-- | src/nautilus-window.c | 5 |
3 files changed, 24 insertions, 1 deletions
diff --git a/src/nautilus-notebook.c b/src/nautilus-notebook.c index 7d6ca52ac..db66d90ee 100644 --- a/src/nautilus-notebook.c +++ b/src/nautilus-notebook.c @@ -188,6 +188,24 @@ nautilus_notebook_init (NautilusNotebook *notebook) #endif } +gboolean +nautilus_notebook_contains_slot (NautilusNotebook *notebook, + NautilusWindowSlot *slot) +{ + GList *children; + GList *l; + gboolean found = FALSE; + + children = gtk_container_get_children (GTK_CONTAINER (notebook)); + for (l = children; l != NULL && !found; l = l->next) { + found = l->data == slot; + } + + g_list_free (children); + + return found; +} + void nautilus_notebook_sync_loading (NautilusNotebook *notebook, NautilusWindowSlot *slot) diff --git a/src/nautilus-notebook.h b/src/nautilus-notebook.h index eade6f298..d81068657 100644 --- a/src/nautilus-notebook.h +++ b/src/nautilus-notebook.h @@ -79,6 +79,8 @@ gboolean nautilus_notebook_can_reorder_current_child_relative (NautilusNo void nautilus_notebook_prev_page (NautilusNotebook *notebook); void nautilus_notebook_next_page (NautilusNotebook *notebook); +gboolean nautilus_notebook_contains_slot (NautilusNotebook *notebook, + NautilusWindowSlot *slot); G_END_DECLS diff --git a/src/nautilus-window.c b/src/nautilus-window.c index e1753f614..4c9170953 100644 --- a/src/nautilus-window.c +++ b/src/nautilus-window.c @@ -795,7 +795,10 @@ nautilus_window_sync_allow_stop (NautilusWindow *window, update_cursor (window); } - nautilus_notebook_sync_loading (NAUTILUS_NOTEBOOK (window->priv->notebook), slot); + /* Avoid updating the notebook if we are calling on dispose or + * on removal of a notebook tab */ + if (nautilus_notebook_contains_slot (NAUTILUS_NOTEBOOK (window->priv->notebook), slot)) + nautilus_notebook_sync_loading (NAUTILUS_NOTEBOOK (window->priv->notebook), slot); } } |