commit 76c11122dd72e2c47675da394dadcca53c9069dd Author: Nils Philippsen Date: Mon Jun 29 13:34:13 2009 +0200 patch: help-browser-webkit Squashed commit of the following: commit 7f26593f67532850a2c3e1141f5c7f5e667b9064 Author: Sven Neumann Date: Tue May 12 09:39:21 2009 +0200 help-browser: fix history menus The history menus located at the back and forward buttons stopped working after a webkit update some time ago. With these changes the menus work again, at least with recent webkit releases. Signed-off-by: Nils Philippsen commit 7647788dbf37369b602361a6abd598388a4cb923 Author: Sven Neumann Date: Sat Mar 28 16:42:50 2009 +0000 Bug 577024 – help-browser plugin crashes when used with webkit 1.1.3 2009-03-28 Sven Neumann Bug 577024 – help-browser plugin crashes when used with webkit 1.1.3 * plug-ins/help-browser/help-browser.c (run): call g_thread_init(). Seems to be needed with newer versions of webkit. svn path=/trunk/; revision=28227 Signed-off-by: Nils Philippsen diff --git a/plug-ins/help-browser/dialog.c b/plug-ins/help-browser/dialog.c index 5ad6a06..159c67a 100644 --- a/plug-ins/help-browser/dialog.c +++ b/plug-ins/help-browser/dialog.c @@ -886,27 +886,30 @@ close_callback (GtkAction *action, } static void -menu_callback (GtkWidget *menu, - WebKitWebHistoryItem *item) +menu_callback (GtkWidget *menu, + gpointer data) { - browser_dialog_load (webkit_web_history_item_get_uri (item)); + gint steps = GPOINTER_TO_INT (data); + + webkit_web_view_go_back_or_forward (WEBKIT_WEB_VIEW (view), steps); } -/* this function unrefs the items and frees the list */ static GtkWidget * -build_menu (GList *items) +build_menu (const GList *items, + gboolean back) { - GtkWidget *menu; - GList *list; + GtkWidget *menu; + const GList *iter; + gint steps; if (! items) return NULL; menu = gtk_menu_new (); - for (list = items; list; list = g_list_next (list)) + for (iter = items, steps = 1; iter; iter = g_list_next (iter), steps++) { - WebKitWebHistoryItem *item = list->data; + WebKitWebHistoryItem *item = iter->data; const gchar *title; title = webkit_web_history_item_get_title (item); @@ -918,16 +921,12 @@ build_menu (GList *items) gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); gtk_widget_show (menu_item); - g_signal_connect_object (menu_item, "activate", - G_CALLBACK (menu_callback), - item, 0); - - g_object_unref (item); + g_signal_connect (menu_item, "activate", + G_CALLBACK (menu_callback), + GINT_TO_POINTER (back ? - steps : steps)); } } - g_list_free (items); - return menu; } @@ -950,12 +949,12 @@ update_actions (void) if (back_forward_list) { - GList *list; + const GList *list; list = webkit_web_back_forward_list_get_back_list_with_limit (back_forward_list, 12); gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (button_prev), - build_menu (list)); + build_menu (list, TRUE)); } else { @@ -971,12 +970,12 @@ update_actions (void) if (back_forward_list) { - GList *list; + const GList *list; list = webkit_web_back_forward_list_get_forward_list_with_limit (back_forward_list, 12); gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (button_next), - build_menu (list)); + build_menu (list, FALSE)); } else { diff --git a/plug-ins/help-browser/help-browser.c b/plug-ins/help-browser/help-browser.c index efbabfe..d632d9c 100644 --- a/plug-ins/help-browser/help-browser.c +++ b/plug-ins/help-browser/help-browser.c @@ -129,6 +129,9 @@ run (const gchar *name, INIT_I18N (); + if (! g_thread_supported ()) + g_thread_init (NULL); + switch (run_mode) { case GIMP_RUN_INTERACTIVE: