diff --git a/midori/midori-view.c b/midori/midori-view.c index 0d7a96e6..e426e7fa 100644 --- a/midori/midori-view.c +++ b/midori/midori-view.c @@ -39,9 +39,11 @@ #include #endif +#if !WEBKIT_CHECK_VERSION (1, 5, 1) /* This is unstable API, so we need to declare it */ gchar* webkit_web_view_get_selected_text (WebKitWebView* web_view); +#endif static void midori_view_construct_web_view (MidoriView* view); @@ -4167,10 +4169,33 @@ midori_view_get_link_uri (MidoriView* view) gboolean midori_view_has_selection (MidoriView* view) { +#if WEBKIT_CHECK_VERSION (1, 5, 1) + WebKitDOMDocument* doc; + WebKitDOMDOMWindow* window; + WebKitDOMDOMSelection* selection; + WebKitDOMRange* range; +#endif + g_return_val_if_fail (MIDORI_IS_VIEW (view), FALSE); + +#if WEBKIT_CHECK_VERSION (1, 5, 1) + doc = webkit_web_view_get_dom_document (WEBKIT_WEB_VIEW (view->web_view)); + window = webkit_dom_document_get_default_view (doc); + selection = webkit_dom_dom_window_get_selection (window); + if (selection == NULL) + return FALSE; + + range = webkit_dom_dom_selection_get_range_at (selection, 0, NULL); + if (range == NULL) + return FALSE; + + katze_assign (view->selected_text, webkit_dom_range_get_text (range)); +#else katze_assign (view->selected_text, webkit_web_view_get_selected_text ( WEBKIT_WEB_VIEW (view->web_view))); +#endif + if (view->selected_text && *view->selected_text) return TRUE; else