]> spindle.queued.net Git - midori/commitdiff
Use DOM API to get selected text in WebKitGTK+ 1.5.1
authorChristian Dywan <christian@twotoasts.de>
Wed, 21 Sep 2011 21:50:51 +0000 (23:50 +0200)
committerChristian Dywan <christian@twotoasts.de>
Wed, 21 Sep 2011 21:50:51 +0000 (23:50 +0200)
Fixes: https://bugs.launchpad.net/midori/+bug/799603
midori/midori-view.c

index 0d7a96e65ec022b09296b9bb91e9ed87003941be..e426e7faf1d602f9cda27847752b366f15175203 100644 (file)
     #include <sys/utsname.h>
 #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