static GtkWidget *browserWindowCreateBackForwardMenu(BrowserWindow *window, GList *list) { if (!list) return NULL; GtkWidget *menu = gtk_menu_new(); GList *listItem; for (listItem = list; listItem; listItem = g_list_next(listItem)) { WebKitBackForwardListItem *item = (WebKitBackForwardListItem *)listItem->data; const char *uri = webkit_back_forward_list_item_get_uri(item); const char *title = webkit_back_forward_list_item_get_title(item); GtkAction *action = gtk_action_new(uri, title, NULL, NULL); g_object_set_data_full(G_OBJECT(action), "back-forward-list-item", g_object_ref(item), g_object_unref); g_signal_connect_swapped(action, "activate", G_CALLBACK(browserWindowHistoryItemActivated), window); GtkWidget *menuItem = gtk_action_create_menu_item(action); g_signal_connect_swapped(menuItem, "select", G_CALLBACK(browserWindowHistoryItemSelected), window); g_object_unref(action); gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), menuItem); gtk_widget_show(menuItem); } g_signal_connect(menu, "hide", G_CALLBACK(resetStatusText), window); return menu; }
wxVector<wxSharedPtr<wxWebViewHistoryItem> > wxWebViewWebKit::GetForwardHistory() { wxVector<wxSharedPtr<wxWebViewHistoryItem> > forwardhist; WebKitBackForwardList* history = webkit_web_view_get_back_forward_list(m_web_view); GList* list = webkit_back_forward_list_get_forward_list_with_limit(history, m_historyLimit); for(guint i = 0; i < g_list_length(list); 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); forwardhist.push_back(item); } return forwardhist; }
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; }