Index: src/fancy_viewer.h =================================================================== RCS file: //plugins/fancy/src/Attic/fancy_viewer.h,v retrieving revision 1.1.2.17 retrieving revision 1.1.2.18 diff -u -r1.1.2.17 -r1.1.2.18 --- src/fancy_viewer.h 1 Jul 2011 01:49:48 -0000 1.1.2.17 +++ src/fancy_viewer.h 29 Sep 2011 23:24:35 -0000 1.1.2.18 @@ -113,6 +113,14 @@ gint tag; gint loading; gint stop_previous; + + /* DOM Objects */ +#if WEBKIT_CHECK_VERSION(1,5,1) + WebKitDOMDocument *doc; + WebKitDOMDOMWindow *window; + WebKitDOMDOMSelection *selection; + WebKitDOMRange *range; +#endif }; #define OPEN_INTERNAL FALSE #define OPEN_EXTERNAL TRUE Index: src/fancy_viewer.c =================================================================== RCS file: //plugins/fancy/src/Attic/fancy_viewer.c,v retrieving revision 1.1.2.48 retrieving revision 1.1.2.49 diff -u -r1.1.2.48 -r1.1.2.49 --- src/fancy_viewer.c 1 Jul 2011 01:49:48 -0000 1.1.2.48 +++ src/fancy_viewer.c 29 Sep 2011 23:24:35 -0000 1.1.2.49 @@ -83,8 +83,10 @@ static void download_file_cb(GtkWidget *widget, FancyViewer *viewer); #endif -/*FIXME substitute webkitwebsettings.cpp functions with their API when available */ -gchar* webkit_web_view_get_selected_text(WebKitWebView* webView); +#if !WEBKIT_CHECK_VERSION (1,5,1) +gchar* webkit_web_view_get_selected_text(WebKitWebView* web_view); +#endif + /*------*/ static GtkWidget *fancy_get_widget(MimeViewer *_viewer) { @@ -243,6 +245,8 @@ gtk_print_unix_dialog_set_manual_capabilities(print_dialog, GTK_PRINT_CAPABILITY_GENERATE_PS); + gtk_print_unix_dialog_set_manual_capabilities(print_dialog, + GTK_PRINT_CAPABILITY_PREVIEW); result = gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_hide (dialog); @@ -293,7 +297,19 @@ { debug_print("fancy_get_selection\n"); FancyViewer *viewer = (FancyViewer *) _viewer; +#if WEBKIT_CHECK_VERSION(1,5,1) + viewer->doc = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(viewer->view)); + viewer->window = webkit_dom_document_get_default_view (viewer->doc); + viewer->selection = webkit_dom_dom_window_get_selection (viewer->window); + if (viewer->selection == NULL) + return NULL; + viewer->range = webkit_dom_dom_selection_get_range_at(viewer->selection, 0, NULL); + if (viewer->range == NULL) + return NULL; + gchar *sel = webkit_dom_range_get_text (viewer->range); +#else gchar *sel = webkit_web_view_get_selected_text(viewer->view); +#endif if (!viewer->view || strlen(sel) == 0) { g_free(sel); return NULL; @@ -686,7 +702,15 @@ debug_print("Clicked on Search on Web\n"); if (webkit_web_view_has_selection(viewer->view)) { gchar *search; +#if WEBKIT_CHECK_VERSION(1,5,1) + viewer->doc = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(viewer->view)); + viewer->window = webkit_dom_document_get_default_view (viewer->doc); + viewer->selection = webkit_dom_dom_window_get_selection (viewer->window); + viewer->range = webkit_dom_dom_selection_get_range_at(viewer->selection, 0, NULL); + gchar *tmp = webkit_dom_range_get_text (viewer->range); +#else gchar *tmp = webkit_web_view_get_selected_text(viewer->view); +#endif search = g_strconcat(GOOGLE_SEARCH, tmp, NULL); webkit_web_view_open(viewer->view, search); g_free(search); @@ -896,7 +920,6 @@ static gboolean populate_popup_cb (WebKitWebView *view, GtkWidget *menu, FancyViewer *viewer) { - /*FIXME hack..until webkit does not give the proper way to handle it*/ Plugin *plugin = plugin_get_loaded_by_name("RSSyl"); gtk_container_foreach(GTK_CONTAINER(menu), (GtkCallback)viewer_menu_handler, @@ -941,7 +964,19 @@ if (webkit_web_view_can_copy_clipboard(view)) { GtkClipboard *wv_clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY); const gchar *sel_text; - sel_text = (const gchar*)webkit_web_view_get_selected_text(view); +#if WEBKIT_CHECK_VERSION(1,5,1) + viewer->doc = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(viewer->view)); + viewer->window = webkit_dom_document_get_default_view (viewer->doc); + viewer->selection = webkit_dom_dom_window_get_selection (viewer->window); + if (viewer->selection == NULL) + return NULL; + viewer->range = webkit_dom_dom_selection_get_range_at(viewer->selection, 0, NULL); + if (viewer->range == NULL) + return NULL; + sel_text = (const *gchar)webkit_dom_range_get_text (viewer->range); +#else + sel_text = (const *gchar)webkit_web_view_get_selected_text(viewer->view); +#endif gtk_clipboard_set_text(wv_clipboard, sel_text, -1); } return FALSE;