Changeset 99206 in webkit
- Timestamp:
- Nov 3, 2011 10:01:42 AM (12 years ago)
- Location:
- trunk/Tools
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r99202 r99206 1 2011-11-03 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK] Add back/forward menus to MiniBrowser using WebKit2 GTK+ API 4 https://bugs.webkit.org/show_bug.cgi?id=71466 5 6 Reviewed by Martin Robinson. 7 8 * MiniBrowser/gtk/BrowserWindow.c: 9 (browserWindowHistoryItemActivated): Go to selected back formard 10 list item using webkit_web_view_go_to_back_forward_list_item() 11 (browserWindowCreateBackForwardMenu): Create a GtkMenu for the 12 given GList of WebKitBackForwardListItems. 13 (browserWindowUpdateNavigationActions): Enable/disable back and 14 forward buttons depending on whether it's possible to go 15 back/forward. Create a menu for back and forward toolbar buttons. 16 (backForwadlistChanged): Call browserWindowUpdateNavigationActions(). 17 (browserWindowConstructed): Connect to WebKitBackForwardList 18 changed signal. 19 1 20 2011-11-03 Simon Hausmann <simon.hausmann@nokia.com> 2 21 -
trunk/Tools/MiniBrowser/gtk/BrowserWindow.c
r99201 r99206 87 87 } 88 88 89 static void browserWindowHistoryItemActivated(BrowserWindow *window, GtkAction *action) 90 { 91 WebKitBackForwardListItem *item = g_object_get_data(G_OBJECT(action), "back-forward-list-item"); 92 if (!item) 93 return; 94 95 webkit_web_view_go_to_back_forward_list_item(window->webView, item); 96 } 97 98 static GtkWidget *browserWindowCreateBackForwardMenu(BrowserWindow *window, GList *list) 99 { 100 if (!list) 101 return NULL; 102 103 GtkWidget *menu = gtk_menu_new(); 104 GList *listItem; 105 for (listItem = list; listItem; listItem = g_list_next(listItem)) { 106 WebKitBackForwardListItem *item = (WebKitBackForwardListItem *)listItem->data; 107 const char *uri = webkit_back_forward_list_item_get_uri(item); 108 const char *title = webkit_back_forward_list_item_get_title(item); 109 110 GtkAction *action = gtk_action_new(uri, title, NULL, NULL); 111 g_object_set_data_full(G_OBJECT(action), "back-forward-list-item", g_object_ref(item), g_object_unref); 112 g_signal_connect_swapped(action, "activate", G_CALLBACK(browserWindowHistoryItemActivated), window); 113 114 GtkWidget *menuItem = gtk_action_create_menu_item(action); 115 g_object_unref(action); 116 117 gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), menuItem); 118 gtk_widget_show(menuItem); 119 } 120 121 return menu; 122 } 123 124 static void browserWindowUpdateNavigationActions(BrowserWindow *window, WebKitBackForwardList *backForwadlist) 125 { 126 gtk_widget_set_sensitive(window->backItem, webkit_web_view_can_go_back(window->webView)); 127 gtk_widget_set_sensitive(window->forwardItem, webkit_web_view_can_go_forward(window->webView)); 128 129 GList *list = webkit_back_forward_list_get_back_list_with_limit(backForwadlist, 10); 130 gtk_menu_tool_button_set_menu(GTK_MENU_TOOL_BUTTON(window->backItem), 131 browserWindowCreateBackForwardMenu(window, list)); 132 g_list_free(list); 133 134 list = webkit_back_forward_list_get_forward_list_with_limit(backForwadlist, 10); 135 gtk_menu_tool_button_set_menu(GTK_MENU_TOOL_BUTTON(window->forwardItem), 136 browserWindowCreateBackForwardMenu(window, list)); 137 g_list_free(list); 138 } 139 140 static void backForwadlistChanged(WebKitBackForwardList *backForwadlist, WebKitBackForwardListItem *itemAdded, GList *itemsRemoved, BrowserWindow *window) 141 { 142 browserWindowUpdateNavigationActions(window, backForwadlist); 143 } 144 89 145 static void browserWindowFinalize(GObject *gObject) 90 146 { … … 176 232 g_signal_connect(window->webView, "notify::estimated-load-progress", G_CALLBACK(webViewLoadProgressChanged), window); 177 233 234 WebKitBackForwardList *backForwadlist = webkit_web_view_get_back_forward_list(window->webView); 235 g_signal_connect(backForwadlist, "changed", G_CALLBACK(backForwadlistChanged), window); 236 178 237 gtk_box_pack_start(GTK_BOX(window->mainBox), GTK_WIDGET(window->webView), TRUE, TRUE, 0); 179 238 gtk_widget_show(GTK_WIDGET(window->webView));
Note: See TracChangeset
for help on using the changeset viewer.