diff -r 0c0112fff3d2 -r 88714527fcb3 pidgin/gtkwebview.c --- a/pidgin/gtkwebview.c Sat Apr 26 13:39:11 2014 +0200 +++ b/pidgin/gtkwebview.c Sat Apr 26 14:41:52 2014 +0200 @@ -932,27 +932,30 @@ webview_popup_menu(WebKitWebView *webview) { WebKitDOMDocument *doc; - WebKitDOMElement *active; - WebKitDOMElement *link; - int context; - char *uri; - - context = WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT; - uri = NULL; + WebKitDOMNode *node = NULL; + int context = WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT; + char *uri = NULL; doc = webkit_web_view_get_dom_document(webview); - active = webkit_dom_html_document_get_active_element(WEBKIT_DOM_HTML_DOCUMENT(doc)); - - link = active; - while (link && !WEBKIT_DOM_IS_HTML_ANCHOR_ELEMENT(link)) - link = webkit_dom_node_get_parent_element(WEBKIT_DOM_NODE(link)); - if (WEBKIT_DOM_IS_HTML_ANCHOR_ELEMENT(link)) { - context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK; - uri = webkit_dom_html_anchor_element_get_href(WEBKIT_DOM_HTML_ANCHOR_ELEMENT(link)); + + /* it's unlikely, at least for webkit 1.x */ + if (WEBKIT_DOM_IS_HTML_DOCUMENT(doc)) { + WebKitDOMElement *active; + WebKitDOMElement *link; + active = webkit_dom_html_document_get_active_element( + WEBKIT_DOM_HTML_DOCUMENT(doc)); + + link = active; + while (link && !WEBKIT_DOM_IS_HTML_ANCHOR_ELEMENT(link)) + link = webkit_dom_node_get_parent_element(WEBKIT_DOM_NODE(link)); + if (WEBKIT_DOM_IS_HTML_ANCHOR_ELEMENT(link)) { + context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK; + uri = webkit_dom_html_anchor_element_get_href(WEBKIT_DOM_HTML_ANCHOR_ELEMENT(link)); + } } do_popup_menu(webview, 0, gtk_get_current_event_time(), - context, WEBKIT_DOM_NODE(active), uri); + context, node, uri); g_free(uri);