From a015433bb66697c11c2163ab3e0cca7bdb00d0fe Mon Sep 17 00:00:00 2001 From: Patrick McDermott Date: Mon, 18 Sep 2017 18:50:50 -0400 Subject: src/tab-chrome.c: Implement basic tab history list --- (limited to 'src') diff --git a/src/tab-chrome.c b/src/tab-chrome.c index 7a9aba9..2d8fb8f 100644 --- a/src/tab-chrome.c +++ b/src/tab-chrome.c @@ -54,17 +54,51 @@ static gboolean back_forward_box_button_press_cb(GtkWidget *widget, GdkEvent *event, MqTabChrome *chrome) { - GtkWidget *stack; - GtkWidget *toggle_button; - GtkWidget *box; - GtkWidget *popover; + WebKitBackForwardList *back_forward_list; + GtkWidget *list_box; + GList *list_item; + GtkWidget *stack; + GtkWidget *toggle_button; + GtkWidget *box; + GtkWidget *popover; if (event->type != GDK_BUTTON_PRESS) { return FALSE; } + back_forward_list = webkit_web_view_get_back_forward_list( + chrome->web_view); + + list_box = gtk_list_box_new(); + gtk_list_box_set_selection_mode(GTK_LIST_BOX(list_box), + GTK_SELECTION_BROWSE); + gtk_list_box_set_activate_on_single_click(GTK_LIST_BOX(list_box), TRUE); + + gtk_list_box_insert(GTK_LIST_BOX(list_box), gtk_label_new( + webkit_back_forward_list_item_get_title( + webkit_back_forward_list_get_current_item( + back_forward_list))), -1); + gtk_list_box_select_row(GTK_LIST_BOX(list_box), + gtk_list_box_get_row_at_index(GTK_LIST_BOX(list_box), 0)); + + list_item = webkit_back_forward_list_get_back_list( + back_forward_list); + for (; list_item; list_item = list_item->next) { + gtk_list_box_insert(GTK_LIST_BOX(list_box), gtk_label_new( + webkit_back_forward_list_item_get_title( + list_item->data)), 0); + } + + list_item = webkit_back_forward_list_get_forward_list( + back_forward_list); + for (; list_item; list_item = list_item->next) { + gtk_list_box_insert(GTK_LIST_BOX(list_box), gtk_label_new( + webkit_back_forward_list_item_get_title( + list_item->data)), -1); + } + stack = gtk_stack_new(); - gtk_stack_add_named(GTK_STACK(stack), gtk_label_new("List"), "list"); + gtk_stack_add_named(GTK_STACK(stack), list_box, "list"); gtk_stack_add_named(GTK_STACK(stack), gtk_label_new("Text"), "text"); toggle_button = gtk_toggle_button_new(); -- cgit v0.9.1