diff options
author | Pablo Barciela <[email protected]> | 2018-12-24 11:35:09 +0100 |
---|---|---|
committer | raveit65 <[email protected]> | 2018-12-27 14:26:03 +0100 |
commit | e7b68e08a5dacacc0a35049422a40a03f95aba4a (patch) | |
tree | bc2f7229c0a99efd4fbdd9b2300ddcfb932d3140 /src | |
parent | 1846d75ba9b18d4017973d79b15045693ff8baac (diff) | |
download | caja-e7b68e08a5dacacc0a35049422a40a03f95aba4a.tar.bz2 caja-e7b68e08a5dacacc0a35049422a40a03f95aba4a.tar.xz |
Fix: weird item in bookmarks if the folder was removed
Fixes https://github.com/mate-desktop/caja/issues/1099
Diffstat (limited to 'src')
-rw-r--r-- | src/caja-navigation-action.c | 42 |
1 files changed, 33 insertions, 9 deletions
diff --git a/src/caja-navigation-action.c b/src/caja-navigation-action.c index a1171153..8fbecfe9 100644 --- a/src/caja-navigation-action.c +++ b/src/caja-navigation-action.c @@ -139,6 +139,7 @@ fill_menu (CajaNavigationWindow *window, GtkWidget *menu_item; int index; GList *list; + gboolean list_void; g_assert (CAJA_IS_NAVIGATION_WINDOW (window)); @@ -146,21 +147,44 @@ fill_menu (CajaNavigationWindow *window, list = back ? slot->back_list : slot->forward_list; index = 0; + list_void = TRUE; + while (list != NULL) { menu_item = caja_bookmark_menu_item_new (CAJA_BOOKMARK (list->data)); - g_object_set_data (G_OBJECT (menu_item), "user_data", GINT_TO_POINTER (index)); - gtk_widget_show (GTK_WIDGET (menu_item)); - g_signal_connect_object (menu_item, "activate", - back - ? G_CALLBACK (activate_back_menu_item_callback) - : G_CALLBACK (activate_forward_menu_item_callback), - window, 0); - - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + + if (menu_item) { + list_void = FALSE; + g_object_set_data (G_OBJECT (menu_item), "user_data", GINT_TO_POINTER (index)); + gtk_widget_show (GTK_WIDGET (menu_item)); + g_signal_connect_object (menu_item, "activate", + back + ? G_CALLBACK (activate_back_menu_item_callback) + : G_CALLBACK (activate_forward_menu_item_callback), + window, 0); + + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + } + list = g_list_next (list); ++index; } + + if (list_void) + { + gtk_menu_shell_append (GTK_MENU_SHELL (menu), + eel_image_menu_item_new_from_icon ("dialog-error", _("folder removed"))); + if (back) + { + caja_navigation_window_slot_clear_back_list (slot); + caja_navigation_window_allow_back (window, FALSE); + } + else + { + caja_navigation_window_slot_clear_forward_list (slot); + caja_navigation_window_allow_forward (window, FALSE); + } + } } static void |