static void update_bookmarks (CajaWindow *window) { CajaBookmarkList *bookmarks; CajaBookmark *bookmark; guint bookmark_count; guint index; GtkUIManager *ui_manager; g_assert (CAJA_IS_WINDOW (window)); g_assert (window->details->bookmarks_merge_id == 0); g_assert (window->details->bookmarks_action_group == NULL); if (window->details->bookmark_list == NULL) { window->details->bookmark_list = caja_bookmark_list_new (); } bookmarks = window->details->bookmark_list; ui_manager = caja_window_get_ui_manager (CAJA_WINDOW (window)); window->details->bookmarks_merge_id = gtk_ui_manager_new_merge_id (ui_manager); window->details->bookmarks_action_group = gtk_action_group_new ("BookmarksGroup"); g_signal_connect (window->details->bookmarks_action_group, "connect-proxy", G_CALLBACK (connect_proxy_cb), NULL); gtk_ui_manager_insert_action_group (ui_manager, window->details->bookmarks_action_group, -1); g_object_unref (window->details->bookmarks_action_group); /* append new set of bookmarks */ bookmark_count = caja_bookmark_list_length (bookmarks); for (index = 0; index < bookmark_count; ++index) { bookmark = caja_bookmark_list_item_at (bookmarks, index); if (caja_bookmark_uri_known_not_to_exist (bookmark)) { continue; } caja_menus_append_bookmark_to_menu (CAJA_WINDOW (window), bookmark, CAJA_WINDOW_GET_CLASS (window)->bookmarks_placeholder, "dynamic", index, window->details->bookmarks_action_group, window->details->bookmarks_merge_id, G_CALLBACK (refresh_bookmarks_menu), show_bogus_bookmark_window); } }
static void activate_bookmark_in_menu_item (GtkAction *action, gpointer user_data) { CajaWindowSlot *slot; BookmarkHolder *holder; GFile *location; holder = (BookmarkHolder *)user_data; if (caja_bookmark_uri_known_not_to_exist (holder->bookmark)) { holder->failed_callback (holder->window, holder->bookmark); } else { location = caja_bookmark_get_location (holder->bookmark); slot = caja_window_get_active_slot (holder->window); caja_window_slot_go_to (slot, location, should_open_in_new_tab ()); g_object_unref (location); } }