Use DOM API to get selected text in WebKitGTK+ 1.5.1

Fixes: https://bugs.launchpad.net/midori/+bug/799603
This commit is contained in:
Christian Dywan 2011-09-21 23:50:51 +02:00
parent 24604a3db6
commit 648d869e4f

View file

@ -39,9 +39,11 @@
#include <sys/utsname.h> #include <sys/utsname.h>
#endif #endif
#if !WEBKIT_CHECK_VERSION (1, 5, 1)
/* This is unstable API, so we need to declare it */ /* This is unstable API, so we need to declare it */
gchar* gchar*
webkit_web_view_get_selected_text (WebKitWebView* web_view); webkit_web_view_get_selected_text (WebKitWebView* web_view);
#endif
static void static void
midori_view_construct_web_view (MidoriView* view); midori_view_construct_web_view (MidoriView* view);
@ -4167,10 +4169,33 @@ midori_view_get_link_uri (MidoriView* view)
gboolean gboolean
midori_view_has_selection (MidoriView* view) 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); 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 ( katze_assign (view->selected_text, webkit_web_view_get_selected_text (
WEBKIT_WEB_VIEW (view->web_view))); WEBKIT_WEB_VIEW (view->web_view)));
#endif
if (view->selected_text && *view->selected_text) if (view->selected_text && *view->selected_text)
return TRUE; return TRUE;
else else