static void ephy_session_tab_closed (EphySession *session, EphyNotebook *notebook, EphyEmbed *embed, gint position) { EphySessionPrivate *priv = session->priv; EphyWebView *view; const char *address; #ifdef HAVE_WEBKIT2 WebKitBackForwardList *source; #else WebKitWebBackForwardList *source; #endif ClosedTab *tab; GList *items = NULL; view = ephy_embed_get_web_view (embed); address = ephy_web_view_get_address (view); source = webkit_web_view_get_back_forward_list (WEBKIT_WEB_VIEW (view)); #ifdef HAVE_WEBKIT2 items = webkit_back_forward_list_get_back_list_with_limit (source, EPHY_WEBKIT_BACK_FORWARD_LIMIT); #else items = webkit_web_back_forward_list_get_back_list_with_limit (source, EPHY_WEBKIT_BACK_FORWARD_LIMIT); #endif if (items == NULL && g_strcmp0 (address, "ephy-about:overview") == 0) return; if (g_queue_get_length (priv->closed_tabs) == MAX_CLOSED_TABS) { tab = g_queue_pop_tail (priv->closed_tabs); if (tab->parent_location && !find_tab_with_notebook (priv->closed_tabs, *tab->parent_location)) { parent_location_free (tab->parent_location, TRUE); } closed_tab_free (tab); tab = NULL; } items = g_list_reverse (items); tab = closed_tab_new (priv->closed_tabs, address, items, position, notebook); g_list_free (items); g_queue_push_head (priv->closed_tabs, tab); if (g_queue_get_length (priv->closed_tabs) == 1) g_object_notify (G_OBJECT (session), "can-undo-tab-closed"); LOG ("Added: %s to the list (%d elements)", address, g_queue_get_length (priv->closed_tabs)); }
static void browserWindowUpdateNavigationActions(BrowserWindow *window, WebKitBackForwardList *backForwadlist) { gtk_widget_set_sensitive(window->backItem, webkit_web_view_can_go_back(window->webView)); gtk_widget_set_sensitive(window->forwardItem, webkit_web_view_can_go_forward(window->webView)); GList *list = g_list_reverse(webkit_back_forward_list_get_back_list_with_limit(backForwadlist, 10)); gtk_menu_tool_button_set_menu(GTK_MENU_TOOL_BUTTON(window->backItem), browserWindowCreateBackForwardMenu(window, list)); g_list_free(list); list = webkit_back_forward_list_get_forward_list_with_limit(backForwadlist, 10); gtk_menu_tool_button_set_menu(GTK_MENU_TOOL_BUTTON(window->forwardItem), browserWindowCreateBackForwardMenu(window, list)); g_list_free(list); }
wxVector<wxSharedPtr<wxWebViewHistoryItem> > wxWebViewWebKit::GetBackwardHistory() { wxVector<wxSharedPtr<wxWebViewHistoryItem> > backhist; WebKitBackForwardList* history = webkit_web_view_get_back_forward_list(m_web_view); GList* list = webkit_back_forward_list_get_back_list_with_limit(history, m_historyLimit); //We need to iterate in reverse to get the order we desire for(int i = g_list_length(list) - 1; i >= 0 ; i--) { WebKitBackForwardListItem* gtkitem = (WebKitBackForwardListItem*)g_list_nth_data(list, i); wxWebViewHistoryItem* wxitem = new wxWebViewHistoryItem( webkit_back_forward_list_item_get_uri(gtkitem), webkit_back_forward_list_item_get_title(gtkitem)); wxitem->m_histItem = gtkitem; wxSharedPtr<wxWebViewHistoryItem> item(wxitem); backhist.push_back(item); } return backhist; }