--- a/src/fancy_viewer.c 2011-07-01 12:50:25.000000000 +0300 +++ b/src/fancy_viewer.c 2011-10-04 22:32:55.740050190 +0300 @@ -83,9 +83,32 @@ static void *download_file_curl (void *d 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 *webView); +#endif + +static gchar *fancy_web_view_get_selected_text(WebKitWebView *webView) +{ +#if !WEBKIT_CHECK_VERSION (1, 5, 1) + return webkit_web_view_get_selected_text(webView); +#else + WebKitDOMDocument *doc; + WebKitDOMDOMWindow *window; + WebKitDOMDOMSelection *selection; + WebKitDOMRange *range; + + doc = webkit_web_view_get_dom_document(webView); + window = webkit_dom_document_get_default_view(doc); + selection = webkit_dom_dom_window_get_selection(window); + if (selection == NULL) + return NULL; + range = webkit_dom_dom_selection_get_range_at(selection, 0, NULL); + if (range == NULL) + return NULL; + return webkit_dom_range_get_text(range); +#endif +} + static GtkWidget *fancy_get_widget(MimeViewer *_viewer) { FancyViewer *viewer = (FancyViewer *) _viewer; @@ -293,7 +316,7 @@ static gchar *fancy_get_selection (MimeV { debug_print("fancy_get_selection\n"); FancyViewer *viewer = (FancyViewer *) _viewer; - gchar *sel = webkit_web_view_get_selected_text(viewer->view); + gchar *sel = fancy_web_view_get_selected_text(viewer->view); if (!viewer->view || strlen(sel) == 0) { g_free(sel); return NULL; @@ -317,7 +340,7 @@ static void fancy_clear_viewer(MimeViewe fancy_prefs.zoom_level = webkit_web_view_get_zoom_level(viewer->view) * 100; viewer->to_load = NULL; vadj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(viewer->scrollwin)); - vadj->value = 0.0; + gtk_adjustment_set_value(vadj, 0.0); g_signal_emit_by_name(G_OBJECT(vadj), "value-changed", 0); } @@ -686,7 +709,7 @@ static void search_the_web_cb(GtkWidget debug_print("Clicked on Search on Web\n"); if (webkit_web_view_has_selection(viewer->view)) { gchar *search; - gchar *tmp = webkit_web_view_get_selected_text(viewer->view); + gchar *tmp = fancy_web_view_get_selected_text(viewer->view); search = g_strconcat(GOOGLE_SEARCH, tmp, NULL); webkit_web_view_open(viewer->view, search); g_free(search); @@ -941,7 +964,7 @@ static gboolean release_button_cb (WebKi 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); + sel_text = (const gchar*)fancy_web_view_get_selected_text(view); gtk_clipboard_set_text(wv_clipboard, sel_text, -1); } return FALSE;